{"version":3,"sources":["webpack:///./src/components/FaceDetector.vue","webpack:///./src/components/FaceDetector.vue?8424","webpack:///./src/components/FaceDetector.vue?018a","webpack:///./src/components/FaceDetector.vue?5d26","webpack:///./node_modules/@vladmandic/human/dist/human.esm.js","webpack:///./src/components/FaceDetector.vue?b0c0","webpack:///./node_modules/speech-synthesis/index.js"],"names":["render","_vm","this","_c","_self","_setupProxy","staticStyle","staticClass","_v","action","_s","_e","show","directives","name","rawName","value","isPhotoTaken","expression","ref","attrs","isShotPhoto","acceptPhoto","on","acceptPhotoTaken","loadHuman","tryAgainOption","require","staticRenderFns","FaceDetector","Vue","constructor","step1","step2","image","neutral_step","smile_step","imageFace","attemps","message","stream","canvas","face","drawTimer","intervalTimer","circleColor","greenTimer","isInsideCircle","isGreen","gestures","Variables","ApiBaseUrl","isWebGLSupported","console","log","document","createElement","gl","getContext","e","beforeDestroy","_this$stream","clearInterval","getTracks","stop","start","humanConfig","cacheSensitivity","modelBasePath","async","filter","enabled","equalization","debug","detector","rotation","return","mask","description","iris","emotion","body","hand","object","gesture","human","Human","$refs","canvasface","video","camera","detectionGestures","navigator","mediaDevices","getUserMedia","audio","facingMode","then","_this$human","srcObject","play","load","startDetection","catch","error","stopCameraStream","setInterval","draw","bind","checkLiveness","playAudio","width","videoWidth","height","videoHeight","drawOval","detect","result","x","box","y","w","h","centerX","centerY","radius","Math","min","circleCenterX","circleCenterY","distanceToCenter","sqrt","Object","values","map","i","length","push","step1Validation","speakMessage","window","speechSynthesis","utterance","SpeechSynthesisUtterance","lang","speak","stopSpeaking","speaking","cancel","setTimeout","_this$stream2","includes","step2Validation","detections","_this$stream3","takePhoto","setGreenOval","clearCanvas","ctx","clearRect","color","beginPath","screen","ellipse","PI","lineWidth","setLineDash","strokeStyle","stroke","rect","fillStyle","fill","photoTakenCanvas","drawImage","toDataURL","getElementById","_video$srcObject","pause","forEach","fileSizeInBytes","fileSizeInKB","fileSizeInMB","img","Image","onload","maxWidth","maxHeight","newWidth","newHeight","resizedImage","$emit","src","__decorate","Prop","Component","component","__defProp","defineProperty","__defNormalProp","obj","key","enumerable","configurable","writable","__export","target","all2","get","__publicField","__accessCheck","member","msg","has","TypeError","__privateGet","getter","call","__privateAdd","WeakSet","add","set","__privateSet","setter","tfjs_esm_exports","Abs","ys","Acos","aa","Acosh","ia","AdadeltaOptimizer","yu","AdagradOptimizer","bu","AdamOptimizer","Cu","AdamaxOptimizer","Su","Add","eo","AddN","Po","All","Mo","Any","Lo","ArgMax","Bo","ArgMin","ei","Asin","ua","Asinh","pa","Atan","ca","Atan2","ma","Atanh","la","AvgPool","Vo","AvgPool3D","dp","AvgPool3DGrad","vm","AvgPoolGrad","mp","BackendWasm","Ll","BatchMatMul","zo","BatchToSpaceND","bs","Bincount","ti","BroadcastArgs","fp","BroadcastTo","ise","Cast","co","Ceil","Wo","ClipByValue","lo","Complex","ri","ComplexAbs","hp","Concat","Cs","Conv2D","Uo","Conv2DBackpropFilter","oi","Conv2DBackpropInput","Go","Conv3D","gp","Conv3DBackpropFilterV2","km","Conv3DBackpropInputV2","xp","Cos","Ho","Cosh","Ko","CropAndResize","Xo","Cumprod","qo","Cumsum","jo","DataStorage","Fo","DenseBincount","ni","DepthToSpace","Yo","DepthwiseConv2dNative","Qo","DepthwiseConv2dNativeBackpropFilter","yp","DepthwiseConv2dNativeBackpropInput","bp","Diag","si","Dilation2D","ai","Dilation2DBackpropFilter","$b","Dilation2DBackpropInput","_b","ENV","kb","Einsum","ii","Elu","Jo","EluGrad","Nm","Environment","Uc","Equal","en","Erf","da","Exp","tn","ExpandDims","Ss","Expm1","fa","FFT","ui","Fill","ws","FlipLeftRight","rn","Floor","FloorDiv","nn","FromPixels","Zi","FusedBatchNorm","sn","FusedConv2D","go","FusedDepthwiseConv2D","xo","GPGPUContext","Lu","GatherNd","an","GatherV2","Is","GraphModel","fl","Greater","un","GreaterEqual","pn","IFFT","pi","Identity","mo","Imag","ci","IsFinite","ha","IsInf","ga","IsNan","cn","KernelBackend","Zr","LRN","mi","LRNGrad","Tm","LeakyRelu","ln","Less","mn","LessEqual","dn","LinSpace","li","Log","fn","Log1p","xa","LogSoftmax","use","LogicalAnd","hn","LogicalNot","gn","LogicalOr","xn","LogicalXor","XI","LowerBound","pse","MathBackendCPU","Pi","MathBackendWebGL","Vi","Max","yn","MaxPool","Cn","MaxPool3D","Cp","MaxPool3DGrad","$m","MaxPoolGrad","_m","MaxPoolWithArgmax","Sp","Maximum","bn","Mean","Sn","Min","wn","Minimum","In","MirrorPad","vn","Mod","ya","MomentumOptimizer","wu","Multinomial","wp","Multiply","kn","Neg","vs","NonMaxSuppressionV3","Tn","NonMaxSuppressionV4","ba","NonMaxSuppressionV5","_n","NotEqual","Nn","OP_SCOPE_SUFFIX","jb","OneHot","$n","OnesLike","ks","Optimizer","wr","OptimizerConstructors","cl","Pack","Ns","PadV2","En","Pool","cse","Pow","An","Prelu","Rn","Prod","Dn","RMSPropOptimizer","Iu","RaggedGather","Ip","RaggedRange","vp","RaggedTensorToTensor","kp","Range","Ts","Rank","Lb","Real","di","RealDiv","Zo","Reciprocal","Fn","Reduction","$t","Relu","On","Relu6","Ln","Reshape","ResizeBilinear","Mn","ResizeBilinearGrad","Am","ResizeNearestNeighbor","Pn","ResizeNearestNeighborGrad","Em","Reverse","Bn","RotateWithOffset","ts","Round","Vn","Rsqrt","zn","SGDOptimizer","Pa","ScatterNd","Wn","SearchSorted","fi","Select","$s","Selu","Ca","Sigmoid","Gn","Sign","wa","Sin","Un","Sinh","Sa","Slice","Es","Softmax","qn","Softplus","Ia","SpaceToBatchND","As","SparseFillEmptyRows","hi","SparseReshape","va","SparseSegmentMean","gi","SparseSegmentSum","xi","SparseToDense","yi","SplitV","Rs","Sqrt","Hn","Square","bi","SquaredDifference","jn","Step","fo","StridedSlice","Xn","StringNGrams","Ds","StringSplit","Ci","StringToHashBucketFast","Si","Sub","Yn","Sum","Kn","Tan","Qn","Tanh","Zn","Tensor","it","TensorBuffer","st","Tile","to","TopK","Jn","Transform","es","Transpose","ro","Unique","Np","Unpack","Fs","UnsortedSegmentSum","Tp","UpperBound","lse","Variable","Na","WebGPUBackend","Gi","ZerosLike","Os","_FusedMatMul","ho","abs","Yt","acos","G0","acosh","H0","be","addN","K0","all","q0","any","j0","argMax","X0","argMin","Y0","asin","Q0","asinh","Z0","atan","J0","atan2","ev","atanh","tv","avgPool","qm","avgPool3d","nv","backend","Pie","backend_util","S","basicLSTMCell","sv","batchNorm","_i","batchNorm2d","iv","batchNorm3d","uv","batchNorm4d","pv","batchToSpaceND","jm","bincount","Xm","booleanMaskAsync","VG","broadcastArgs","cv","broadcastTo","$i","broadcast_util","yr","browser","gN","buffer","le","cast","je","ceil","lv","clipByValue","mv","clone","Lr","complex","Tr","concat","xt","concat1d","dv","concat2d","fv","concat3d","hv","concat4d","gv","conv1d","xv","conv2d","Ei","conv2dTranspose","yv","conv3d","bv","conv3dTranspose","Sv","copyRegisteredKernels","bse","cos","wv","cosh","Iv","cosineWindow","al","cumprod","vv","cumsum","kv","customGrad","br","denseBincount","Nv","deprecationWarn","nC","depthToSpace","Tv","depthwiseConv2d","Bp","deregisterOp","Mq","device_util","ki","diag","dilation2d","$v","disableDeprecationWarnings","kie","dispose","Ot","disposeVariables","Nie","div","He","divNoNan","Av","dot","Rv","dropout","ZG","einsum","Dv","elu","Jm","enableDebugMode","vie","enableProdMode","Iie","enclosingPowerOfTwo","CC","engine","sr","env","O","equal","Zm","erf","Fv","euclideanNorm","Mv","exp","So","expandDims","Ra","expm1","Lv","eye","ed","fft","zp","Us","findBackend","Fie","findBackendFactory","Oie","floor","td","floorDiv","Km","forceHalfFloat","GE","fused","SC","gather","rd","gatherND","YG","gather_util","Wd","getBackend","Rie","getGradient","Eb","getKernel","Kc","getKernelsForBackend","Rm","getThreadsCount","Kee","gpgpu_util","$w","grad","HU","grads","KU","greater","uu","greaterEqual","od","ifft","du","imag","Ri","eK","inTopKAsync","eH","io","La","irfft","Td","isFinite","Bv","isInf","Vv","isNaN","zv","keep","_r","kernel_impls","Vt","leakyRelu","nd","less","Wv","lessEqual","Vp","linalg","tK","linspace","Uv","loadGraphModel","A6","loadGraphModelSync","R6","localResponseNormalization","Gv","Da","log1p","sd","logSigmoid","Hv","logSoftmax","Kv","logSumExp","ud","logicalAnd","pu","logicalNot","pd","logicalOr","cd","logicalXor","qv","losses","rK","lowerBound","jv","matMul","Xe","math","fN","max","Gs","maxPool","md","maxPool3d","Xv","maxPoolWithArgmax","Yv","maximum","dd","mean","cu","memory","Tie","meshgrid","Qv","rl","minimum","fd","mirrorPad","Zv","mod","Jv","moments","ek","movingAverage","UG","mul","ne","multiRNNCell","tk","multinomial","rk","neg","Cr","nextFrame","AC","norm","iu","notEqual","hd","oneHot","nl","ones","Hs","onesLike","ok","op","N","outerProduct","nk","pad","Ks","pad1d","sk","pad2d","ak","pad3d","ik","pad4d","uk","pool","pk","pow","Aa","prelu","xd","print","Hm","prod","ck","profile","_ie","raggedGather","lk","raggedRange","mk","raggedTensorToTensor","dk","rand","fk","randomGamma","Ok","randomNormal","Id","randomStandardNormal","Pk","randomUniform","vd","range","Di","ready","Aie","real","Fa","reciprocal","Mk","registerBackend","Ti","registerGradient","gse","registerKernel","ka","registerOp","Pq","relu","Fi","relu6","kd","removeBackend","Die","reshape","W","reverse","no","reverse1d","Lk","reverse2d","Bk","reverse3d","Vk","reverse4d","zk","rfft","Wp","round","Nd","rsqrt","Wk","scalar","Ce","scatterND","HG","scatter_util","sl","searchSorted","ol","selu","Uk","separableConv2d","Gk","serialization","oN","setBackend","Eie","setPlatform","Mie","setThreadsCount","Hee","setWasmPath","Uee","setWasmPaths","Gee","setWebGLContext","US","setdiff1dAsync","Hk","shared","Zp","sigmoid","Ws","sign","Kk","signal","JH","sin","qk","sinh","jk","slice","Ke","slice1d","Xk","slice2d","Yk","slice3d","Qk","slice4d","Zk","slice_util","ut","softmax","Jk","softplus","id","spaceToBatchND","gd","sparse","oK","sparseToDense","jG","spectral","ZH","split","Oa","$r","square","Qt","squaredDifference","_d","squeeze","Up","stack","Sr","step","$d","stridedSlice","e1","string","nK","sub","ke","sum","et","sumOutType","Ta","tan","t1","tanh","tl","tensor","nr","tensor1d","dr","tensor2d","Oi","tensor3d","Ed","tensor4d","r1","tensor5d","o1","tensor6d","n1","tensor_util","C0","test_util","Fk","tidy","Ee","tile","Ai","time","$ie","topk","s1","train","YMe","transpose","Gp","truncatedNormal","a1","unique","i1","unregisterGradient","yse","unregisterKernel","xse","unsortedSegmentSum","u1","unstack","so","upcastType","dt","upperBound","p1","util","valueAndGrad","qU","valueAndGrads","jU","variable","c1","variableGrads","pC","version","tse","version_converter","F6","version_core","RK","version_cpu","pj","version_wasm","qee","version_webgl","nY","webgl","CJe","webgl_util","nc","webgpu_util","hI","where","ss","whereAsync","Rd","zeros","Br","zerosLike","Ut","PV","create","yb","MV","getOwnPropertyDescriptor","LV","getOwnPropertyNames","BV","getPrototypeOf","VV","prototype","hasOwnProperty","Kt","r","exports","Ge","t10","zV","o","n","ap","__esModule","i0","Sse","a0","It","yo","WebAssembly","Instance","Module","Uint8Array","low","high","unsigned","Mr","__isLong__","isLong","QI","ZI","eu","vt","bo","Ji","Co","r0","s0","e0","Pr","n0","Ep","fromInt","fromNumber","fromBits","Dm","Db","Error","RangeError","indexOf","substring","s","a","p","parseInt","u","rs","fromString","fromValue","JI","cz","t0","ZERO","UZERO","$p","ONE","o0","UONE","Rb","NEG_ONE","MAX_VALUE","MAX_UNSIGNED_VALUE","MIN_VALUE","de","toInt","toNumber","toString","isZero","isNegative","eq","c","getHighBits","getHighBitsUnsigned","getLowBits","getLowBitsUnsigned","getNumBitsAbs","eqz","isPositive","isOdd","isEven","equals","notEquals","neq","lessThan","comp","lt","lessThanOrEqual","lte","greaterThan","gt","greaterThanOrEqual","gte","ge","compare","negate","not","l","m","d","subtract","multiply","get_high","f","divide","div_u","div_s","toUnsigned","shru","shr","shl","LN2","modulo","rem_u","rem_s","rem","and","or","xor","shiftLeft","shiftRight","shiftRightUnsigned","shr_u","toSigned","toBytes","toBytesLE","toBytesBE","fromBytes","fromBytesLE","fromBytesBE","W0","U0","gk","hk","cC","next","s2","state","int32","double","quick","String","charCodeAt","amd","alea","define","yk","xk","lC","z","xor128","Ck","bk","mC","v","xorwow","wk","Sk","dC","Date","xorshift7","vk","Ik","fC","g","X","xor4096","Nk","kk","hC","b","tychei","Tk","$k","_k","yd","C","k","_","entropy","E","A","R","D","P","M","pass","L","global","j","V","randomBytes","crypto","msCrypto","getRandomValues","plugins","fromCharCode","apply","random","self","gC","QSe","Ek","P4","M4","L4","B4","V4","z4","lu","oI","nI","x3","y3","b3","C3","wg","aI","sI","currentScript","__filename","te","ze","Nt","ct","at","Rr","Pt","er","Promise","F","B","process","listeners","uncaughtException","unhandledRejection","assign","importScripts","versions","node","ENVIRONMENT_IS_PTHREAD","locateFile","qi","K","dirname","__dirname","ue","ep","URL","normalize","readFileSync","readFile","Me","Pe","argv","replace","Do","exitCode","exit","inspect","Worker","location","href","substr","lastIndexOf","XMLHttpRequest","open","send","responseText","responseType","response","status","onerror","title","performance","warn","writeSync","U","printErr","arguments","thisProgram","quit","oe","Atomics","store","compareExchange","wasmBinary","J","noExitRuntime","Ki","ie","ye","ce","Ne","Ie","TextDecoder","Ae","decode","SharedArrayBuffer","subarray","fe","ve","Ft","Qr","Re","ot","pt","HEAP8","Int8Array","HEAP16","Int16Array","HEAP32","Int32Array","HEAPU8","HEAPU16","Uint16Array","HEAPU32","Uint32Array","HEAPF32","Float32Array","HEAPF64","Float64Array","tr","INITIAL_MEMORY","wasmMemory","Memory","initial","byteLength","rr","jr","Xr","cr","hs","preRun","Dc","shift","Pc","qt","ta","postRun","AI","unshift","Fc","Ya","Ju","ra","Rx","monitorRunDependencies","Yl","onAbort","RuntimeError","lr","Dx","Ql","startsWith","Zl","Fx","fetch","credentials","arrayBuffer","resolve","Ox","lm","wasi_snapshot_preview1","asm","Gx","_emscripten_tls_init","__indirect_function_table","__wasm_call_ctors","Oe","unusedWorkers","na","loadWasmModuleToWorker","instance","module","instantiate","instantiateStreaming","instantiateWasm","Jl","Px","pthreads","terminate","hb","runningWorkers","splice","pthread_ptr","Mx","postMessage","cmd","Oc","returnWorkerToPool","Lx","getNewWorker","start_routine","startRoutine","arg","runPthread","transferList","loaded","tm","Qa","terminateAllThreads","onExit","Bx","om","rm","Vx","tlsInitFunctions","init","initWorker","initMainThread","allocateUnusedWorker","setExitStatus","unref","receiveObjectTransfer","threadInitTLS","onmessage","data","currentProxiedOperationCallerThread","targetThread","xm","Mc","queue","thread","threadId","text","alert","handler","args","filename","lineno","handlers","urlOrBlob","mainScriptUrlOrBlob","wasmModule","pop","zx","BI","ym","PThread","establishStackSpace","tp","Wx","Ux","LI","Hx","OI","Kx","nm","sm","qx","invokeEntryPoint","Lc","jx","Xx","MI","Yx","Qx","Zx","ji","shown","Jx","ey","now","am","ty","ry","copyWithin","oy","cpus","hardwareConcurrency","ny","gb","bm","executeNotifiedProxyingQueue","hrtime","timeOrigin","Bc","sy","fy","ay","grow","iy","uy","im","um","py","cy","pm","cm","ly","my","Dr","sp","WI","array","Boolean","zI","xb","OV","dy","every","Cm","Sm","wm","__emscripten_init_main_thread_js","__emscripten_thread_cleanup","__pthread_create_js","_emscripten_default_pthread_stack_size","_emscripten_get_now_is_monotonic","_emscripten_notify_task_queue","_emscripten_set_offscreencanvas_size","abort","emscripten_check_blocking_allowed","emscripten_date_now","emscripten_get_heap_max","emscripten_get_now","emscripten_memcpy_big","emscripten_num_logical_cores","emscripten_receive_on_main_thread_js","emscripten_resize_heap","emscripten_unwind_to_js_event_loop","fd_close","fd_seek","fd_write","___wasm_call_ctors","_init","_init_with_threads_count","init_with_threads_count","_get_threads_count","get_threads_count","_register_tensor","register_tensor","_dispose_data","dispose_data","_dispose","_Abs","_Add","_AddN","_All","_Any","_ArgMax","_AvgPool","_BatchMatMul","_Ceil","_ClipByValue","_Conv2D","_Conv2DBackpropInput","_Cos","_Cosh","_CropAndResize","_Cumprod","_Cumsum","_DepthToSpace","_DepthwiseConv2dNative","_Elu","_Equal","_Exp","_FlipLeftRight","_Floor","_FloorDiv","_FusedBatchNorm","_FusedConv2D","_FusedDepthwiseConv2D","_Gather","Gather","_GatherNd","_Greater","_GreaterEqual","_IsNan","_LeakyRelu","_Less","_LessEqual","_Log","_LogicalAnd","_LogicalNot","_LogicalOr","_LogicalXor","_Max","_MaxPool","_Maximum","_Mean","_Min","_Minimum","_MirrorPad","_Multiply","_Neg","_NonMaxSuppressionV3","_NonMaxSuppressionV4","_NonMaxSuppressionV5","_NotEqual","_OneHot","_PadV2","_Pow","_Prelu","_Prod","_RealDiv","_Reciprocal","_Relu","_Relu6","_ResizeBilinear","_ResizeNearestNeighbor","_Reverse","_RotateWithOffset","_Round","_Rsqrt","_ScatterNd","_SelectV2","SelectV2","_Sigmoid","_Sin","_Softmax","_SparseFillEmptyRows","_SparseReshape","_SparseSegmentReduction","SparseSegmentReduction","_Sqrt","_Square","_SquaredDifference","_Step","_StridedSlice","_Sub","_Sum","_Tan","_Tanh","_Tile","_TopK","_Transform","_Transpose","__FusedMatMul","_malloc","malloc","_free","free","__emscripten_tls_init","_pthread_self","pthread_self","___errno_location","__errno_location","__emscripten_thread_init","_emscripten_thread_init","__emscripten_thread_crashed","_emscripten_thread_crashed","_emscripten_main_thread_process_queued_calls","emscripten_main_thread_process_queued_calls","_emscripten_main_browser_thread_id","emscripten_main_browser_thread_id","_emscripten_run_in_main_runtime_thread_js","emscripten_run_in_main_runtime_thread_js","_emscripten_dispatch_to_thread_","emscripten_dispatch_to_thread_","__emscripten_proxy_execute_task_queue","_emscripten_proxy_execute_task_queue","__emscripten_thread_free_data","_emscripten_thread_free_data","__emscripten_thread_exit","_emscripten_thread_exit","_emscripten_stack_set_limits","emscripten_stack_set_limits","stackSave","stackRestore","stackAlloc","dynCall_iijjiiii","dynCall_jiji","VI","startWorker","setStatus","calledRun","onRuntimeInitialized","keepRuntimeAlive","cwrap","ExitStatus","preInit","WasmBackendModule","FV","removeListener","WasmBackendModuleThreadedSimd","w3","a1t","S3","wasmWorkerContents","I3","Ig","uI","iI","G","se","Te","nt","Tt","Z","ee","_t","qe","Ue","Wt","Yr","H","q","ft","ht","qr","ea","RI","DI","hr","Za","gm","Vc","oa","hm","mm","zc","fb","dm","rp","np","fm","db","dataMover","WeakMap","dataIdsCount","moveData","delete","Fr","floatPrecision","UI","Im","WV","ip","UV","GV","HV","KV","Number","$","Or","Jr","We","qV","sa","jV","XV","YV","Yi","repeat","QV","ZV","Ja","bb","Array","isArray","sort","newShape","keptDims","Cb","Sb","wb","Ib","JV","up","vb","Oo","GI","HI","pp","Uint8ClampedArray","gs","cp","xs","KI","reduce","Xi","ez","from","Wc","lp","tz","bt","isInteger","rz","oz","Qi","qI","flags","flagRegistry","urlFlags","getQueryParams","sz","populateURLFlags","platform","getBool","platformName","evaluationFn","setHook","evaluateFlag","search","iz","az","join","decodeURIComponent","toLowerCase","Nb","jI","Tb","uz","_tfGlobals","Map","Gc","Ps","pz","_p","Hc","Ab","entries","done","kernelName","backendName","arraysEqual","assert","assertNonNegativeIntegerDimensions","assertNonNull","assertShapesMatch","bytesFromStringArray","bytesPerElement","checkConversionForErrors","clamp","computeStrides","convertBackendValuesAndArrayBuffer","createScalarValue","gz","createShuffledIndices","decodeString","Rp","distSquared","encodeString","Ii","yz","fingerPrint64","hz","flatten","os","getArrayFromDType","getTypedArrayFromDType","hasEncodingLoss","hexToLong","qc","indexToLoc","inferDtype","inferFromImplicitShape","isBoolean","isFunction","isInt","isNumber","isPromise","isScalarShape","isString","isTypedArray","Bt","isValidDtype","locToIndex","makeOnesTypedArray","makeZerosNestedTypedArray","makeZerosTypedArray","nearestDivisor","nearestLargerEven","ou","parseAxisParam","randUniform","repeatedTry","rightPad","shuffle","shuffleCombo","sizeFromShape","sizeToSquarishShape","squeezeShape","swap","toNestedArray","toTypedArray","Ap","Ob","ru","default","p0","tu","gr","Fb","c0","Ct","u0","jt","wi","lz","Fm","mz","dz","fz","xz","encode","keys","test","Om","backendTimer","logger","Pb","timerAvailable","dataSync","kernelMs","bz","dtype","outputs","inputs","timeMs","extraInfo","getExtraProfileInfo","logKernelProfile","rank","size","shape","l0","m0","gradient","d0","jc","Mb","f0","Cz","Pm","Yc","Xc","parseFloat","toFixed","h0","strides","ns","makeTensor","Dp","g0","x0","y0","kept","isDisposedInternal","dataId","rankType","throwIfDisposed","read","readToGPU","readSync","isDisposed","disposeTensor","makeVariable","wz","Symbol","hasInstance","super","trainable","incRef","disposeVariable","Function","Bb","Vb","zb","Wb","assertTypesMatch","Ub","getTensorsInContainer","Qc","isTensorInList","vz","makeTypesMatch","De","R0","R1","R2","R3","R4","R5","float32","bool","complex64","Iz","some","b0","Set","kz","Gb","Mm","registeredVariables","nextTapeNodeId","numBytes","numTensors","numStringTensors","numDataBuffers","gradientDepth","kernelDepth","scopeStack","numDataMovesStack","nextScopeId","tensorInfo","profiling","activeProfile","newBytes","newTensors","peakBytes","kernels","vi","registry","registryFactory","pendingBackendInitId","pendingBackendInit","backendInstance","getSortedBackends","initializeBackend","success","asyncInit","initializeBackendsAndReturnBest","factory","priority","setupRegisteredKernels","profiler","setupFunc","disposeFunc","disposeRegisteredKernels","refCount","disposeData","move","shouldCheckForMemLeaks","scopedRun","startScope","endScope","nextTensorId","nextVariableId","T","runKernel","addTapeNode","activeScope","runKernelFunc","numDataIds","isTapeOn","kernelFunc","checkKernelForMemLeak","makeTensorFromTensorInfo","getTensorsForGradient","saveTensorsForBackwardMode","forwardFunc","backwardsFunc","profileKernel","bytesAdded","totalBytesSnapshot","tensorsAdded","totalTensorsSnapshot","inputShapes","outputShapes","kernelTimeMs","inputsToSave","outputsToSave","saveAllInputs","write","trackTensor","bytes","track","removeDataId","unreliable","reasons","saved","gradFunc","activeTape","scopeId","startTape","endTape","Nz","Tz","wallMs","reset","Hb","_tfengine","Kb","_z","$z","Ez","product","userAgent","vendor","opera","userAgentData","mobile","qb","WorkerGlobalScope","isBrowser","isMobile","mockIsMobile","oo","channels","ArrayBuffer","w0","S0","_a","registerFlag","endsWith","Az","complex_","xr","createTensorFromGPUData","Zc","float16","uint16","uint8","Lm","v0","group","Rz","specs","Bm","quantization","scale","Pz","JSON","stringify","Xb","Buffer","Blob","atob","btoa","I0","k0","N0","byteOffset","Fp","Yb","trim","Vm","modelTopology","format","generatedBy","convertedBy","weightsManifest","signature","userDefinedMetadata","modelInitializer","initializerSignature","trainingConfig","Qb","weightSpecs","weightData","Op","Ms","dateSaved","modelTopologyType","modelTopologyBytes","weightSpecsBytes","weightDataBytes","zm","weights","Dz","Fz","Oz","mt","saveRouters","loadRouters","getInstance","getHandlers","T0","registerSaveRouter","_0","registerLoadRouter","$0","getSaveHandlers","E0","getLoadHandlers","Zb","Jb","nu","Ni","A0","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","shimIndexedDB","eC","createObjectStore","keyPath","Ls","modelPath","databaseAction","onupgradeneeded","onsuccess","transaction","objectStore","close","modelArtifacts","oncomplete","put","modelArtifactsInfo","URL_SCHEME","Mz","Lz","Wm","getAll","$a","Pp","D0","Bz","Vz","zz","Wz","F0","info","topology","modelMetadata","O0","localStorage","removeItem","Uz","Gz","Bs","LS","setItem","parse","getItem","P0","Hz","Um","Mp","Xt","managers","Gm","getSchemes","scheme","path","M0","getManager","removeModel","save","L0","listModels","B0","V0","z0","tC","messageName","functionRefs","handledMessageCount","hasEventListener","textEncoder","TextEncoder","index","addEventListener","source","stopPropagation","registerManager","rC","Kz","importFetch","oC","types","isFloat32Array","isInt32Array","isUint8Array","isUint8ClampedArray","qz","cast_","jz","clone_","Xz","Yz","add_","Qz","floorDiv_","Zz","div_","Jz","mul_","eW","abs_","tW","acos_","rW","acosh_","oW","addN_","nW","axis","keepDims","all_","sW","any_","aW","argMax_","iW","argMin_","uW","asin_","pW","asinh_","cW","atan_","lW","atan2_","mW","atanh_","dW","ov","au","aC","Jc","fW","sC","rv","Lp","padInfo","outHeight","outWidth","xW","batchSize","dataFormat","inHeight","inWidth","inChannels","outChannels","strideHeight","strideWidth","filterHeight","filterWidth","effectiveFilterHeight","effectiveFilterWidth","dilationHeight","dilationWidth","inShape","outShape","filterShape","outDepth","yW","inDepth","strideDepth","filterDepth","effectiveFilterDepth","dilationDepth","hW","iC","el","gW","top","bottom","left","right","type","front","back","trunc","su","mr","Vs","Mt","bW","reshape_","CW","filterSize","dimRoundingMode","avgPool_","SW","avgPool3d_","wW","concat_","IW","transposeA","transposeB","matMul_","vW","sigmoid_","kW","begin","slice_","NW","tanh_","TW","basicLSTMCell_","_W","blockShape","crops","batchToSpaceND_","av","$W","offset","variance","varianceEpsilon","batchNorm_","EW","batchNorm2d_","AW","batchNorm3d_","RW","batchNorm4d_","DW","bincount_","FW","broadcastArgs_","OW","reps","broadcastTo_","PW","ceil_","MW","clipValueMin","clipValueMax","clipByValue_","LW","concat1d_","BW","concat2d_","VW","concat3d_","zW","concat4d_","WW","dilations","conv2d_","UW","conv1d_","GW","inputShape","Ym","conv2DBackpropInput_","HW","conv2dTranspose_","KW","conv3d_","qW","Cv","conv3DBackpropInput_","jW","conv3dTranspose_","XW","cos_","YW","cosh_","QW","exclusive","cumprod_","ZW","cumsum_","JW","binaryOutput","denseBincount_","eU","blockSize","depthToSpace_","tU","depthwiseConv2d_","rU","diag_","oU","dilation2d_","Ev","Qm","Je","nU","assertAndGetBroadcastShape","getBroadcastDims","getReductionAxes","equal_","sU","condition","t","where_","aU","zerosLike_","iU","divNoNan_","uU","dot_","pU","equation","einsum_","cU","elu_","lU","erf_","uC","Ov","mU","Ea","dU","fU","hU","gU","yU","reductionIndices","max_","bU","min_","CU","pow_","SU","sqrt_","wU","square_","IU","sum_","vU","Pv","norm_","kU","euclideanNorm_","NU","exp_","TU","input","dim","expandDims_","_U","expm1_","$U","tile_","EU","toTensor","eye_","AU","floor_","RU","indices","batchDims","gather_","DU","greater_","FU","greaterEqual_","OU","imag_","PU","isFinite_","MU","isInf_","LU","isNaN_","BU","alpha","leakyRelu_","VU","less_","zU","lessEqual_","num","WU","depthRadius","bias","beta","localResponseNormalization_","UU","log_","GU","log1p_","gradients","ad","XU","neg_","YU","softplus_","QU","logSigmoid_","ZU","sub_","JU","logSoftmax_","e4","logSumExp_","t4","logicalAnd_","r4","logicalNot_","o4","logicalOr_","n4","logicalXor_","ld","s4","sortedSequence","side","searchSorted_","a4","maxPool_","i4","maxPool3d_","u4","includeBatchInIndex","indexes","maxPoolWithArgmax_","p4","maximum_","c4","mean_","indexing","l4","minimum_","m4","paddings","mode","mirrorPad_","d4","mod_","f4","moments_","h4","multiRNNCell_","g4","logits","numSamples","seed","normalized","multinomial_","x4","notEqual_","y4","depth","onValue","offValue","oneHot_","b4","onesLike_","C4","outerProduct_","S4","constantValue","pad_","w4","pad1d_","I4","pad2d_","v4","pad3d_","k4","pad4d_","N4","spaceToBatchND_","T4","$4","_4","pool_","E4","prelu_","A4","prod_","paramsNestedSplits","paramsDenseValues","outputRaggedRank","outputNestedSplits","outputDenseValues","raggedGather_","D4","starts","limits","deltas","rtNestedSplits","rtDenseValues","raggedRange_","F4","defaultValue","rowPartitionTensors","rowPartitionTypes","raggedTensorToTensor_","O4","rand_","wd","TEST_EPSILON_FLOAT16","Ak","createVideoElement","j4","encodeStrings","Dk","expectArrayBuffersEqual","q4","expectArraysClose","U4","expectArraysEqual","H4","expectNumbersClose","Rk","expectPromiseToFail","G4","expectValuesInRange","K4","X4","testEpsilon","bd","W4","xC","yC","expect","nothing","fail","playsInline","muted","loop","style","position","preload","appendChild","requestVideoFrameCallback","mu","stdDev","nextVal","NaN","truncated","upper","lower","isValidTruncated","convertValue","Cd","randu","randn","nextValue","Sd","canReturnFloat","Y4","randomGamma_","Q4","randomNormal_","Z4","randomStandardNormal_","J4","randomUniform_","eG","real_","tG","reciprocal_","rG","relu_","oG","relu6_","nG","dims","reverse_","sG","reverse1d_","aG","reverse2d_","iG","reverse3d_","uG","reverse4d_","pG","round_","cG","rsqrt_","lG","selu_","mG","separableConv2d_","dG","fG","sign_","hG","sin_","gG","sinh_","xG","slice1d_","yG","slice2d_","bG","slice3d_","CG","slice4d_","SG","softmax_","wG","fft_","IG","ifft_","vG","irfft_","kG","numOrSizeSplits","split_","NG","rfft_","TG","squaredDifference_","_G","squeeze_","$G","stack_","EG","step_","AG","end","beginMask","endMask","ellipsisMask","newAxisMask","shrinkAxisMask","stridedSlice_","RG","tan_","DG","sorted","topk_","FG","truncatedNormal_","OG","unique_","PG","segmentIds","numSegments","unsortedSegmentSum_","MG","unstack_","Ad","LG","BG","zG","perm","transpose_","WG","movingAverage_","bC","Dd","l1","sliceRank","numUpdates","sliceSize","outputSize","GG","updates","calculateShapes","validateInput","validateUpdateShape","scatterND_","m1","qG","sparseIndices","sparseValues","outputShape","sparseToDense_","XG","params","gatherND_","d1","QG","dropout_","JG","tH","h1","y1","b1","f1","conv2DBackpropFilter_","fu","hu","gu","xu","rH","activation","preluActivationWeights","leakyreluAlpha","fusedConv2d_","oH","g1","depthwiseConv2dNativeBackpropFilter_","nH","x1","depthwiseConv2dNativeBackpropInput_","sH","fusedDepthwiseConv2d_","aH","fusedMatMul_","iH","C1","hammingWindow_","uH","Fd","hannWindow_","pH","Od","frame_","cH","S1","stft_","lH","boxes","boxInd","method","extrapolationValue","cropSize","w1","cropAndResize_","mH","I1","flipLeftRight_","dH","v1","grayscaleToRGB_","fH","radians","fillValue","center","k1","rotateWithOffset_","wo","NEGATIVE_INFINITY","maxOutputSize","iouThreshold","scoreThreshold","softNmsSigma","hH","scores","N1","nonMaxSuppression_","T1","gH","yH","xH","Pd","wC","Md","Ld","score","boxIndex","suppressBeginIndex","_1","bH","CH","selectedIndices","selectedScores","validOutputs","SH","$1","wH","E1","nonMaxSuppressionWithScore_","IH","A1","vH","padToMaxOutputSize","nonMaxSuppressionPadded_","kH","D1","NH","images","alignCorners","halfPixelCenters","F1","resizeBilinear_","TH","O1","resizeNearestNeighbor_","_H","$H","P1","threshold_","EH","transforms","interpolation","fillMode","M1","transform_","AH","L1","bandPart_","RH","B1","gramSchmidt_","DH","V1","z1","qr_","FH","SUM_BY_NONZERO_WEIGHTS","NONE","SUM","MEAN","ar","computeWeightedLoss_","OH","W1","absoluteDifference_","PH","U1","cosineDistance_","MH","G1","hingeLoss_","LH","H1","huberLoss_","BH","K1","logLoss_","VH","q1","meanSquaredError_","zH","WH","j1","sigmoidCrossEntropy_","UH","GH","X1","softmaxCrossEntropy_","HH","denseShape","outputIndices","outputValues","emptyRowIndicator","reverseIndexMap","Y1","sparseFillEmptyRows_","KH","inputIndices","Q1","sparseReshape_","qH","Z1","sparseSegmentMean_","jH","J1","sparseSegmentSum_","XH","separator","nGramWidths","leftPad","padWidth","preserveShortSequences","dataSplits","nGrams","nGramsSplits","eN","stringNGrams_","YH","skipEmpty","delimiter","tN","stringSplit_","QH","numBuckets","rN","stringToHashBucketFast_","hammingWindow","hannWindow","frame","stft","flipLeftRight","grayscaleToRGB","resizeNearestNeighbor","resizeBilinear","rotateWithOffset","cropAndResize","nonMaxSuppression","nonMaxSuppressionAsync","nonMaxSuppressionWithScore","nonMaxSuppressionWithScoreAsync","nonMaxSuppressionPadded","nonMaxSuppressionPaddedAsync","threshold","transform","bandPart","gramSchmidt","absoluteDifference","computeWeightedLoss","cosineDistance","hingeLoss","huberLoss","logLoss","meanSquaredError","sigmoidCrossEntropy","softmaxCrossEntropy","sparseFillEmptyRows","sparseReshape","sparseSegmentMean","sparseSegmentSum","stringNGrams","stringSplit","stringToHashBucketFast","Serializable","il","SerializationMap","qs","registerClass","IC","className","classNameMap","getMap","fromConfig","register","computeGradients","applyGradients","iterations_","iterations","getClassName","minimize","learningRate","rho","epsilon","accumulatedGrads","accumulatedUpdates","originalName","incrementIterations","saveIterations","extractIterations","initialAccumulatorValue","beta1","beta2","accumulatedFirstMoment","accumulatedSecondMoment","accBeta1","accBeta2","decay","accumulatedWeightedInfNorm","iteration","setLearningRate","momentum","useNesterov","accumulations","accumulatedMeanSquares","accumulatedMoments","accumulatedMeanGrads","centered","sK","nN","browserFiles","aN","browserHTTPRequest","pN","concatenateArrayBuffers","copyModel","decodeWeights","encodeWeights","fromMemory","cN","fromMemorySync","$C","getModelArtifactsForJSON","getModelArtifactsForJSONSync","getModelArtifactsInfoForJSON","getWeightSpecs","http","Vd","isHTTPScheme","Bd","loadWeights","iN","moveModel","weightsLoaderFactory","TC","withSaveHandler","lN","withSaveHandlerSync","mN","aK","iK","uK","sN","Ma","modelJsonFileName","weightDataFileName","createObjectURL","paths","modelJsonAnchor","download","dispatchEvent","MouseEvent","weightDataAnchor","vC","jsonFile","weightsFiles","FileReader","readAsText","checkManifestAndWeightFiles","loadWeightsFile","readAsArrayBuffer","pK","cK","kC","NC","fetchFunc","requestInit","isBinary","onProgress","manifestEntry","groupOffset","sizeBytes","lK","mK","ul","DEFAULT_METHOD","weightPathPrefix","weightUrlConverter","FormData","append","responses","json","dK","match","URL_SCHEME_REGEX","uN","pl","zd","saveHandler","_C","fK","confusionMatrix","dN","vu","confusionMatrix_","hN","ImageData","HTMLVideoElement","HTMLImageElement","ImageBitmap","pixels","numChannels","getImageData","OffscreenCanvas","OffscreenCanvasRenderingContext2D","willReadFrequently","hK","gK","xK","yK","bK","createImageBitmap","premultiplyAlpha","CK","putImageData","fromPixels","SK","fromPixelsAsync","toPixels","fromPixels_","xN","prepareAndValidate","assertParamsValid","IK","computeFlatOffset","_K","computeOutShape","kK","getNormalizedAxes","NK","isSliceContinous","TK","maskToAxes","vK","parseSliceParams","$K","sliceInfo","EK","startForAxis","kN","startIndicesWithElidedDims","wN","stopForAxis","NN","stopIndicesWithElidedDims","IN","stridesForAxis","vN","stridesWithElidedDims","bN","EC","wK","CN","SN","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","numAddAxisAfterEllipsis","beginValid","endValid","AK","yN","finalShapeGatherIndices","finalShapeSparse","finalShape","isIdentity","sliceDim0","isSimpleSlice","finalShapeGatherIndicesSparse","inputShapeGatherIndicesSparse","DK","requestAnimationFrame","setImmediate","js","FK","OK","PK","MK","FIRST_DIM_SIZE","VALUE_ROWIDS","ROW_LENGTHS","ROW_SPLITS","ROW_LIMITS","ROW_STARTS","LK","BK","ERF_A1","YK","ERF_A2","QK","ERF_A3","ZK","ERF_A4","JK","ERF_A5","ERF_P","XK","PARALLELIZE_THRESHOLD","Ud","RowPartitionType","SELU_SCALE","jK","SELU_SCALEALPHA","qK","applyActivation","assertAxesAreInnerMostDims","assertParamsConsistent","assignToTypedArray","aq","axesAreInnerMostDims","checkEinsumDimSizes","mq","checkPadOnDimRoundingMode","combineLocations","combineRaggedTensorToTensorShapes","complexWithEvenIndex","oq","complexWithOddIndex","nq","computeConv2DInfo","computeConv3DInfo","computeDefaultPad","computeDilation2DInfo","computeOptimalWindowSize","VK","computeOutAndReduceShapes","computePool2DInfo","computePool3DInfo","convertConv2DDataFormat","decodeEinsumEquation","cq","eitherStridesOrDilationsAreOne","expandShapeToKeepDim","exponent","uq","exponents","iq","fromStringArrayToUint8","Dq","fromUint8ToStringArray","Rq","getAxesPermutation","getComplexWithIndex","sq","getEinsumComputePath","dq","getEinsumPermutation","lq","getFusedBiasGradient","getFusedDyActivation","getImageCenter","zK","getInnerMostAxes","getPermuted","UK","getRaggedRank","getReshaped","WK","getReshapedPermuted","GK","getRowPartitionTypesHelper","getSliceBeginCoords","HK","getSliceSize","KK","getSparseFillEmptyRowsIndicesDenseShapeMismatch","xq","getSparseFillEmptyRowsNegativeIndexErrorMessage","yq","getSparseFillEmptyRowsOutOfRangeIndexErrorMessage","bq","getSparseReshapeEmptyTensorZeroOutputDimErrorMessage","wq","getSparseReshapeInputOutputMismatchErrorMessage","vq","getSparseReshapeInputOutputMultipleErrorMessage","Iq","getSparseReshapeMultipleNegativeOneOutputDimErrorMessage","Cq","getSparseReshapeNegativeOutputDimErrorMessage","Sq","getSparseSegmentReductionIndicesOutOfRangeErrorMessage","_q","getSparseSegmentReductionNegativeSegmentIdsErrorMessage","kq","getSparseSegmentReductionNonIncreasingSegmentIdsErrorMessage","Nq","getSparseSegmentReductionSegmentIdOutOfRangeErrorMessage","Tq","getUndoAxesPermutation","isIdentityPermutation","fq","mergeRealAndImagArrays","tq","prepareSplitSize","gq","segment_util","DC","shouldFuse","splitRealAndImagArrays","rq","stridesOrDilationsArePositive","tupleValuesAreOne","validateDefaultValueShape","RC","pq","TN","_N","allDims","summedDims","idDims","permutationIndices","hq","steps","$q","Eq","Aq","outerSize","dimSize","collectGatherOpShapeInfo","segOpComputeOptimalWindowSize","nonMaxSuppressionV3Impl","nonMaxSuppressionV4Impl","nonMaxSuppressionV5Impl","whereImpl","ao","$N","Fq","DT_INVALID","DT_FLOAT","DT_DOUBLE","DT_INT32","DT_UINT8","DT_INT16","DT_INT8","DT_STRING","DT_COMPLEX64","DT_INT64","DT_BOOL","DT_QINT8","DT_QUINT8","DT_QINT32","DT_BFLOAT16","DT_QINT16","DT_QUINT16","DT_UINT16","DT_COMPLEX128","DT_HALF","DT_RESOURCE","DT_VARIANT","DT_UINT32","DT_UINT64","DT_FLOAT_REF","DT_DOUBLE_REF","DT_INT32_REF","DT_UINT8_REF","DT_INT16_REF","DT_INT8_REF","DT_STRING_REF","DT_COMPLEX64_REF","DT_INT64_REF","DT_BOOL_REF","DT_QINT8_REF","DT_QUINT8_REF","DT_QINT32_REF","DT_BFLOAT16_REF","DT_QINT16_REF","DT_QUINT16_REF","DT_UINT16_REF","DT_COMPLEX128_REF","DT_HALF_REF","DT_RESOURCE_REF","DT_VARIANT_REF","DT_UINT32_REF","DT_UINT64_REF","LEGACY","V2","CheckpointFormatVersion","OC","tfOpName","category","customExecutor","Gd","I","inputParams","inputIndexStart","inputIndexEnd","Gt","inputNames","attrParams","Ir","getHashTableHandleByName","currentContextIds","find","Hd","EN","currentContextId","as","ll","is","PC","Lq","tfName","notSupported","MC","Bq","LC","Vq","BC","zq","VC","Wq","zC","Uq","WC","Gq","UC","Hq","GC","Kq","HC","qq","KC","jq","qC","Xq","jC","Yq","XC","Qq","YC","Zq","QC","Jq","ZC","e6","JC","t6","eS","r6","tfDeprecatedName","ml","opMappers","_instance","mapNode","mapSignatureEntries","children","signatureKey","library","function","mapFunction","nodes","placeholders","functions","initNodes","attr","rawAttrs","Kd","Jd","jd","Zd","qd","tf","Qd","ef","Xd","Yd","AN","nodeDef","inputArg","tS","ret","outputArg","defaultOutput","mapArgsToSignature","methodName","mapArgToTensorInfo","o6","RN","func","list","DN","unknownRank","rf","tensorMap","context","getInput","getAttr","Ye","FN","ON","Vr","PN","Hp","of","nf","maxSize","elementShape","identicalElementShapes","dynamicSize","clearAfterRead","tensors","closed_","idTensor","cleared","written","readMany","writeMany","Ba","elementDtype","maxNumElements","MN","LN","BN","VN","zN","functionMap","executeFunctionAsync","tensorArrayMap","tensorListMap","enterFrame","exitFrame","nextIteration","addTensorArray","getTensorArray","scatter","clearAndClose","getTensorList","addTensorList","pushBack","popBack","resize","WN","toUpperCase","stride","biasArg","preluArg","activationFunc","UN","GN","rS","HN","KN","qN","sf","keyDType","valueDType","handle","clear","checkKeyAndValueTensor","findWithDefault","jN","addHashTable","getHashTableById","import","tensorSize","XN","YN","QN","ZN","JN","eT","tT","rT","oT","nT","sT","oS","dl","weightMap","rootContext","frameName","iterationId","contexts","lastId","generateCurrentContextIds","_currentContextIds","contextIdforContexts","newFrame","nS","sS","T6","_6","usedNodes","missingInputs","dynamicNode","syncInputs","aT","v6","k6","N6","ku","graph","parent","compiledMap","_weightMap","SEPERATOR","_functions","_functionExecutorMap","keepIntermediateTensors","_outputs","_inputs","_initNodes","_signature","weightIds","_weightIds","functionExecutorMap","_resourceManager","cloneAndKeepTensor","fromEntries","cloneTensorList","disposeIntermediateTensors","mapInputs","checkInputs","checkInputShapeAndType","mapOutputs","checkOutputs","getCompilationKey","compile","clonedTensorsMap","cloneTensorMap","getFrozenTensorIds","checkTensorForDisposal","_executeAsync","executeWithControlFlow","outputNodes","currentContext","processStack","processChildNodes","af","hashTableNameToHandle","hashTableMap","$6","E6","modelUrl","loadOptions","resourceManager","executor","inputNodes","artifacts","structuredOutputKeys","findIOHandler","loadSync","producer","minConsumer","transformGraph","convertTensorMapToTensorsMap","initializer","execute","addStructuredOutputNames","executeAsync","resourceId","resourceIdToCapturedInput","setResourceIdToCapturedInput","executeInitializerGraph","normalizeInputs","normalizeOutputs","executeInitializerGraphAsync","getIntermediateTensors","fromTFHub","D6","O6","firstUse","nextDataId","complexTensorInfos","makeTensorInfo","aS","addImpl","uS","bincountImpl","jp","bincountReduceImpl","uf","castImpl","iS","ceilImpl","pS","concatImpl","Nu","equalImpl","cS","expImpl","mS","expm1Impl","fS","floorImpl","hS","gatherNdImpl","pf","gatherV2Impl","cf","greaterEqualImpl","xS","greaterImpl","gS","lessEqualImpl","bS","lessImpl","yS","linSpaceImpl","lf","logImpl","CS","maxImpl","mf","maximumImpl","SS","minimumImpl","wS","multiplyImpl","hl","negImpl","IS","notEqualImpl","vS","prodImpl","kS","raggedGatherImpl","df","raggedRangeImpl","ff","raggedTensorToTensorImpl","hf","rangeImpl","_u","rsqrtImpl","NS","scatterImpl","Va","sigmoidImpl","OT","simpleAbsImpl","sliceImpl","$u","sparseFillEmptyRowsImpl","gf","sparseReshapeImpl","xf","sparseSegmentReductionImpl","Qp","sqrtImpl","LT","squaredDifferenceImpl","_S","stridedSliceImpl","yf","stringNGramsImpl","Eu","stringSplitImpl","Au","stringToHashBucketFastImpl","Ru","subImpl","ES","tileImpl","bf","topKImpl","Cf","transposeImpl","Xp","uniqueImpl","Sf","P6","makeOutput","iT","Be","Ht","uT","Kp","ir","pT","Io","cT","vo","disposeIntermediateTensorInfo","lT","Qe","qp","M6","Xs","mT","vr","we","ko","L6","dT","vals","lS","fT","dS","hT","B6","gT","V6","xT","z6","yT","W6","bT","U6","CT","G6","ST","H6","wT","K6","IT","q6","vT","j6","Tu","kT","X6","NT","Y6","TT","St","_T","outVals","outDtype","Q6","$T","Z6","J6","ej","outSplits","valueSlices","numValues","tj","ET","rj","oj","AT","No","Yp","shapeShape","valuesShape","valuesDType","defaultValueShape","rowPartitionValues","rowPartitionValuesShapes","raggedRank","getRowPartitionTensor","getRowPartitionTypeByDimension","getMaxWidthValueRowID","getMaxWidthRowSplit","DT","tensorShapeFromTensor","getMaxWidth","calculateOutputIndexValueRowID","calculateOutputIndexRowSplit","getFirstDimensionSize","calculateOutputSize","calculateFirstParentOutputIndex","calculateOutputIndex","setOutput","RT","compute","nj","FT","TS","PT","To","MT","sj","BT","aj","VT","$S","preserveShort","getPadWidth","getNumNGrams","createNGrams","ij","uj","zT","xl","WT","AS","UT","RS","GT","cj","DS","HT","FS","KT","OS","qT","Du","Le","jT","PS","XT","lj","YT","mj","QT","dj","ZT","fj","JT","hj","e2","gj","t2","xj","r2","yj","o2","bj","n2","Cj","Sj","a2","wj","Ij","i2","vj","u2","Jp","POSITIVE_INFINITY","wf","If","p2","kj","c2","Nj","l2","Tj","bufferSync","m2","_j","d2","$j","f2","Ej","h2","Aj","g2","Rj","x2","Dj","y2","Fj","hypot","b2","Ys","C2","Mi","S2","MS","w2","Oj","I2","Pj","v2","Mj","k2","Lj","N2","Bj","T2","Vj","_2","zj","$2","Wj","E2","Uj","A2","Gj","Hj","D2","Kj","F2","O2","qj","P2","jj","M2","Xj","L2","B2","z2","za","W2","Yj","U2","Qj","G2","Zj","Jj","eX","tX","rX","oX","nX","H2","ec","K2","sX","yl","bl","vf","aX","iX","BS","uX","pX","q2","Cl","cX","j2","X2","lX","mX","Y2","dX","Q2","fX","Z2","hX","J2","gX","e_","xX","t_","yX","r_","bX","o_","CX","n_","SX","s_","wX","a_","IX","vX","i_","kX","u_","NX","TX","p_","_X","c_","$X","l_","VS","m_","EX","d_","AX","f_","RX","h_","DX","output","g_","x_","y_","FX","b_","OX","C_","PX","S_","MX","LX","w_","v_","zS","I_","BX","k_","VX","zX","N_","WX","UX","T_","GX","HX","__","KX","$_","Sl","E_","A_","R_","WS","D_","qX","kf","jX","XX","F_","YX","O_","QX","P_","ZX","M_","JX","L_","e5","B_","t5","V_","r5","z_","o5","W_","n5","U_","s5","G_","H_","a5","K_","i5","q_","u5","p5","j_","c5","X_","l5","Y_","m5","d5","f5","Q_","h5","Z_","g5","J_","x5","e$","y5","t$","b5","r$","C5","o$","S5","n$","w5","s$","I5","a$","v5","i$","k5","u$","N5","p$","c$","T5","l$","_5","m$","$5","d$","E5","f$","A5","h$","g$","D5","x$","F5","y$","O5","b$","P5","C$","z5","W5","S$","M5","L5","V5","B5","wl","U5","w$","G5","I$","H5","v$","K5","assertNotComplex","us","bindCanvasToFramebuffer","t8","bindColorTextureToFramebuffer","Nl","bindTextureToProgramUniformSampler","nw","bindTextureUnit","_$","bindVertexBufferToProgramAttribute","Af","callAndCheck","pe","canBeRepresented","KS","createFragmentShader","jS","createFramebuffer","tw","createProgram","XS","createStaticIndexBuffer","ZS","createStaticVertexBuffer","QS","createTexture","JS","createVertexShader","qS","getBatchDim","Ua","getExtensionOrThrow","tc","getFramebufferErrorMessage","$$","getMaxTexturesInShader","iw","getNumChannels","J5","getProgramUniformLocation","ow","getProgramUniformLocationOrThrow","rw","getRowsCols","Ga","getShapeAs3D","oc","getTextureShapeFromLogicalShape","sw","getWebGLDisjointQueryTimerVersion","uw","getWebGLErrorMessage","T$","getWebGLMaxTextureSize","aw","hasExtension","Wr","isCapableOfRenderingToFloatTexture","pw","isDownloadFloatTextureEnabled","cw","isReshapeFree","Bi","isWebGLFenceEnabled","lw","isWebGLVersionEnabled","Df","linkProgram","YS","logShaderSourceAndInfoLog","Ef","resetMaxTextureSize","r8","resetMaxTexturesInShader","o8","unbindColorTextureFromFramebuffer","Rf","unbindTextureUnit","e8","validateFramebuffer","rc","validateProgram","kl","validateTextureSize","ew","Li","ur","Zt","Fu","Nf","antialias","premultipliedAlpha","preserveDrawingBuffer","stencil","failIfMajorPerformanceCaveat","zr","j5","isContextLost","disable","DEPTH_TEST","STENCIL_TEST","BLEND","DITHER","POLYGON_OFFSET_FILL","SAMPLE_COVERAGE","enable","SCISSOR_TEST","CULL_FACE","cullFace","BACK","q5","preventDefault","Ou","k$","Il","Qs","N$","vl","getNumber","R32F","R16F","RGBA16F","RGBA32F","RED","HALF_FLOAT","FLOAT","RGBA8","RGBA","HALF_FLOAT_OES","internalFormatFloat","internalFormatHalfFloat","internalFormatPackedHalfFloat","internalFormatPackedFloat","textureFormatFloat","downloadTextureFormat","downloadUnpackNumChannels","defaultNumChannels","textureTypeHalfFloat","textureTypeFloat","X5","getError","NO_ERROR","DENSE","SHARED_BATCH","RENDER","UPLOAD","PIXELS","DOWNLOAD","UNPACKED_FLOAT16","UNPACKED_FLOAT32","PACKED_4X1_UNSIGNED_BYTE","PACKED_2X2_FLOAT32","PACKED_2X2_FLOAT16","Y5","Q5","INVALID_ENUM","INVALID_VALUE","INVALID_OPERATION","INVALID_FRAMEBUFFER_OPERATION","OUT_OF_MEMORY","CONTEXT_LOST_WEBGL","Wa","getExtension","createShader","VERTEX_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","FRAGMENT_SHADER","_f","$f","Z5","exec","getProgramParameter","LINK_STATUS","getProgramInfoLog","VALIDATE_STATUS","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","STATIC_DRAW","ELEMENT_ARRAY_BUFFER","getAttribLocation","vertexAttribPointer","enableVertexAttribArray","E$","activeTexture","TEXTURE0","bindTexture","TEXTURE_2D","getUniformLocation","uniform1i","bindFramebuffer","FRAMEBUFFER","viewport","scissor","framebufferTexture2D","COLOR_ATTACHMENT0","checkFramebufferStatus","FRAMEBUFFER_COMPLETE","FRAMEBUFFER_INCOMPLETE_ATTACHMENT","FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT","FRAMEBUFFER_INCOMPLETE_DIMENSIONS","FRAMEBUFFER_UNSUPPORTED","MAX_COMBINED_TEXTURE_IMAGE_UNITS","Tf","getParameter","MAX_TEXTURE_SIZE","MAX_TEXTURE_IMAGE_UNITS","HS","n8","texImage2D","deleteTexture","deleteFramebuffer","fenceSync","Se","wt","attribute","varyingVs","varyingFs","texture2D","defineOutput","defineSpecialNaN","defineSpecialInf","defineRound","ps","Pu","s8","A$","sc","ac","Ff","R$","D$","shapeInfo","logicalShape","isUniform","enableShapeUniforms","uniformShape","Of","packedInputs","texShape","customUniforms","arrayIndex","a8","p8","m8","isPacked","i8","l8","u8","c8","g8","userCode","uc","_8","E8","R8","F8","P8","M8","L8","F$","T8","$8","A8","D8","O8","B8","V8","O$","x8","k8","b8","S8","y8","N8","C8","w8","I8","v8","d8","f8","h8","Mu","charAt","pc","cc","lc","flatOffset","$e","useSqueezeShape","M$","texData","variableNames","program","fragmentShader","webGLProgram","inShapeInfos","outShapeInfo","uniformLocations","customUniformLocations","infLoc","nanLoc","inShapesLocations","inTexShapesLocations","outShapeLocation","outShapeStridesLocation","outTexShapeLocation","mw","P$","L$","texture","setOutputPackedMatrixTexture","setOutputMatrixTexture","setProgram","uniform1f","uniform1iv","uniform2iv","uniform3iv","uniform4iv","uniform2i","uniformValues","uniform1fv","setInputMatrixTexture","uniform2fv","uniform3fv","uniform4fv","executeProgram","B$","Pf","packedOutput","outPackingScheme","Mf","Lf","outTexUsage","Bf","U8","Tl","Vf","dw","fw","hw","_l","texParameteri","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","TEXTURE_MIN_FILTER","NEAREST","TEXTURE_MAG_FILTER","texStorage2D","zf","gw","Wf","xw","Uf","yw","UNSIGNED_BYTE","Gf","bw","Hf","Cw","Sw","ww","texSubImage2D","Iw","vw","PIXEL_PACK_BUFFER","STREAM_READ","readPixels","kw","getBufferSubData","Nw","Tw","_w","bindVertexProgramAttributeStreams","createBufferFromOutputTexture","createFloat16MatrixTexture","createFloat16PackedMatrixTexture","createFloat32MatrixTexture","createIndexBuffer","createPackedMatrixTexture","createUnsignedBytesMatrixTexture","createVertexBuffer","downloadByteEncodedFloatMatrixFromOutputTexture","downloadFloat32MatrixFromBuffer","downloadMatrixFromPackedOutputTexture","downloadPackedMatrixFromBuffer","getInternalFormatForFloat16MatrixTexture","getInternalFormatForFloat16PackedMatrixTexture","getInternalFormatForFloat32MatrixTexture","getInternalFormatForPackedMatrixTexture","getInternalFormatForUnsignedBytesMatrixTexture","uploadDenseMatrixToTexture","uploadPixelDataToTexture","outputTexture","disposed","itemsToPoll","createVertexArray","bindVertexArray","deleteVertexArray","getVertexArray","VERTEX_ARRAY_BINDING","createVertexArrayOES","bindVertexArrayOES","deleteVertexArrayOES","VERTEX_ARRAY_BINDING_OES","parallelCompilationExtension","textureFloatExtension","textureHalfFloatExtension","colorBufferFloatExtension","colorBufferHalfFloatExtension","vertexBuffer","indexBuffer","framebuffer","textureConfig","finish","deleteBuffer","downloadMatrixDriver","bindTextureToFrameBuffer","unbindTextureToFrameBuffer","createFence","pollFence","SYNC_GPU_COMMANDS_COMPLETE","flush","clientWaitSync","ALREADY_SIGNALED","CONDITION_SATISFIED","beginQuery","endQuery","isQueryAvailable","query","isFencePassed","vertexShader","attachShader","vao","deleteProgram","useProgram","throwIfNoProgram","setOutputMatrixTextureDriver","setOutputMatrixWriteRegionDriver","debugValidate","drawElements","TRIANGLES","UNSIGNED_SHORT","disjointQueryTimerExtension","getQueryTimerExtension","getQueryTimerExtensionWebGL2","createQuery","TIME_ELAPSED_EXT","getQueryTimerExtensionWebGL1","createQueryEXT","beginQueryEXT","endQueryEXT","getQueryTime","getQueryParameter","QUERY_RESULT","getQueryObjectEXT","QUERY_RESULT_EXT","QUERY_RESULT_AVAILABLE","disjoint","GPU_DISJOINT_EXT","QUERY_RESULT_AVAILABLE_EXT","addItemToPoll","G8","isDoneFn","resolveFn","setTimeoutCustom","pollItems","V$","Kf","z$","W$","U$","G$","H$","K$","q$","j$","X$","Y$","Q$","Z$","J$","eE","tE","rE","oE","nE","sE","aE","iE","uE","pE","cE","lE","mE","dE","fE","hE","gE","qf","xE","yE","bE","jf","CE","SE","wE","IE","vE","kE","NE","TE","Bu","_E","Ew","Et","$E","Xf","getOutOfBoundsCondition","getSetup","getOutput","getSourceCoordsArr","mc","H8","Yf","gpgpu","numUsedTextures","numFreeTextures","_numBytesAllocated","_numBytesFree","freeTextures","logEnabled","usedTextures","AE","RE","EE","deleteMatrixTexture","K8","q8","j8","Jt","zt","DE","Aw","FE","OE","PE","Zs","ME","BE","VE","zE","WE","UE","Er","Qf","Y8","Q8","Z8","Zf","J8","eY","tY","rY","devicePixelRatio","pendingRead","pendingDisposal","dataRefCount","numBytesInGPU","uploadWaitMs","downloadWaitMs","lastGlFlushTime","warnedAboutMemory","pendingDeletes","binaryCache","gpgpuCreatedLocally","textureManager","numMBBeforeWarning","runWebGLProgram","checkNumericalProblems","usage","convertAndCacheOnCPU","activeTimers","getValuesFromTexture","createBufferFromTexture","createAndWaitForFence","customTexShape","tensorRef","downloadMatrixFromPackedTexture","programTimersStack","ms","numBytesInGPUAllocated","numBytesAllocated","numBytesInGPUFree","numBytesFree","startMs","endMs","waitForQueryAndGetTime","releaseGPUData","origDataId","computeBytes","releaseTexture","uploadToGPU","compileAndRun","shouldExecuteOnCPU","packedUnaryOp","unpackTensor","packTensor","packedReshape","getAndSaveBinary","startTimer","endTimer","HTMLCanvasElement","remove","floatPrecisionValue","getTexture","acquireTexture","oY","checkCompletion_","checkCompletionAsync_","COMPLETION_STATUS_KHR","isTexture","writeTexture","makeTensorFromDataId","dc","Js","_o","supportsBroadcasting","At","HE","Ar","KE","Rw","Dw","sY","qE","Fw","Ow","aY","jE","$o","he","opSnippet","packedOpSnippet","cpuKernelImpl","tt","checkOutOfBounds","supportsComplex","Ha","fc","Pw","REAL","IMAG","$l","XE","El","YE","QE","re","ZE","Al","windowSize","inSize","outSize","toPrecision","Jf","uY","Ur","eh","pY","th","zi","JE","Vu","eA","yt","tA","Mw","zu","cY","rA","oA","lY","nA","mY","dY","sA","fY","hY","aA","iA","gY","uA","rh","oh","nh","pA","xY","cA","yY","lA","sh","ah","mA","dA","ih","bY","fA","CY","hA","SY","wY","gA","IY","vY","xA","kY","NY","yA","TY","_Y","$Y","bA","EY","AY","CA","cs","Wi","RY","SA","DY","wA","uh","ph","FY","IA","OY","vA","PY","kA","ch","lh","MY","NA","mh","LY","Lw","dh","BY","ls","TA","VY","_A","zY","$A","WY","EA","UY","Bw","AA","Ka","RA","GY","DA","Vw","FA","OA","HY","PA","fh","hh","KY","MA","gh","LA","qY","BA","xh","bh","yh","Wu","VA","hc","tensors2D","jY","zw","zA","gc","Ch","xc","Sh","wh","Ih","convInfo","vh","XY","WA","kh","Nh","Th","_h","YY","UA","QY","GA","ZY","HA","JY","KA","eQ","Uu","qA","tQ","rQ","jA","oQ","nQ","XA","$h","sQ","YA","Rl","QA","ZA","Eh","log2","aQ","JA","iQ","eR","uQ","tR","Ah","getHeightCoordString","getWidthCoordString","getDepthCoordString","getOutputDepthSize","getInputSamplingString","pQ","rR","yc","bc","cQ","oR","Rh","Dh","lQ","nR","mQ","sR","Fh","dQ","aR","Oh","fQ","iR","hQ","uR","gQ","xQ","yQ","pR","bQ","CQ","SQ","cR","wQ","IQ","vQ","lR","kQ","NQ","mR","TQ","_Q","Ww","dR","Ph","fR","hR","$Q","gR","Dl","Mh","EQ","xR","Lh","qa","Cc","yR","Bh","bR","CR","AQ","SR","RQ","DQ","FQ","wR","Vh","zh","IR","OQ","Uw","PQ","vR","MQ","kR","Wh","sliceDim","paramsShape","LQ","NR","Uh","BQ","Gw","TR","VQ","zQ","WQ","_R","UQ","GQ","HQ","$R","KQ","ER","qQ","jQ","AR","XQ","YQ","RR","QQ","ZQ","DR","JQ","e7","t7","FR","r7","o7","n7","OR","s7","PR","a7","i7","u7","MR","p7","c7","LR","l7","m7","d7","BR","f7","h7","VR","g7","x7","y7","zR","Gh","Hh","b7","WR","Kh","C7","UR","GR","Hw","HR","S7","w7","I7","KR","v7","qR","k7","jR","qh","jh","N7","XR","T7","YR","QR","ZR","JR","eD","_7","tD","$7","E7","A7","rD","Xh","Yh","R7","oD","D7","F7","O7","nD","Qh","P7","M7","Kw","sD","aD","qw","iD","jw","uD","L7","pD","B7","V7","z7","cD","W7","U7","lD","G7","H7","mD","K7","q7","dD","Zh","j7","fD","Fl","hD","gD","xD","X7","yD","Jh","eg","Xw","bD","Y7","Q7","Z7","CD","J7","SD","eZ","wD","tZ","ID","rZ","vD","Yw","kD","oZ","nZ","ND","sZ","aZ","iZ","TD","uZ","pZ","cZ","_D","tg","rg","lZ","$D","og","mZ","ED","ng","sg","dZ","AD","ag","fZ","RD","ig","ug","hZ","DD","pg","FD","gZ","xZ","OD","yZ","bZ","PD","Sc","CZ","MD","cg","SZ","LD","lg","wZ","BD","IZ","vZ","VD","kZ","NZ","TZ","zD","_Z","$Z","WD","EZ","AZ","UD","RZ","DZ","GD","FZ","OZ","HD","PZ","KD","MZ","qD","LZ","jD","BZ","XD","VZ","YD","zZ","QD","WZ","ZD","JD","UZ","eF","GZ","HZ","tF","rF","KZ","oF","qZ","nF","mg","jZ","sF","XZ","aF","YZ","iF","QZ","uF","ZZ","JZ","pF","e9","t9","cF","dg","r9","Qw","lF","fg","hg","Gu","mF","o9","dF","gg","n9","fF","s9","hF","a9","gF","xg","i9","Fe","Ui","yF","xF","u9","p9","wasm","c9","dataIdMap","linear","leakyrelu","bF","Ve","CF","rt","wF","l9","SF","m9","d9","IF","Hu","typedArrayFromHeap","kF","vF","f9","uo","g9","h9","TF","NF","kr","transposed","originalAxes","axes","inputWasTransposed","x9","y9","$F","_F","b9","C9","AF","EF","S9","w9","DF","RF","I9","v9","FF","Lt","PF","OF","k9","N9","MF","Eo","stringBytes","T9","_9","$9","LF","E9","BF","WF","VF","zF","A9","R9","UF","Zw","HF","GF","D9","F9","qF","KF","O9","P9","Jw","QF","jF","XF","YF","M9","L9","bilinear","nearest","JF","ZF","B9","V9","tO","eO","z9","W9","oO","rO","U9","G9","sO","nO","H9","K9","aO","iO","q9","uO","pO","yg","cO","eI","mO","lO","j9","X9","gO","dO","fO","Y9","hO","Q9","Z9","yO","xO","J9","eJ","CO","bO","tJ","rJ","wO","SO","oJ","nJ","vO","IO","sJ","aJ","$O","kO","iJ","NO","uJ","TO","_O","pJ","cJ","LO","EO","lJ","AO","mJ","RO","DO","dJ","FO","OO","fJ","PO","hJ","MO","gJ","xJ","zO","BO","yJ","VO","bJ","CJ","UO","WO","SJ","wJ","HO","GO","IJ","vJ","tI","jO","KO","kJ","qO","NJ","TJ","reflect","symmetric","ZO","XO","_J","YO","QO","wc","pSelectedIndices","selectedSize","pSelectedScores","pValidOutputs","$J","EJ","eP","JO","AJ","RJ","rP","tP","DJ","FJ","sP","oP","OJ","nP","PJ","MJ","aP","LJ","iP","BJ","pP","uP","VJ","zJ","lP","bg","WJ","cP","UJ","GJ","dP","mP","HJ","KJ","CP","fP","qJ","hP","jJ","gP","xP","yP","bP","XJ","YJ","wP","SP","QJ","ZJ","vP","IP","JJ","eee","NP","kP","tee","ree","EP","TP","_P","$P","oee","nee","RP","AP","see","aee","FP","DP","iee","uee","MP","OP","PP","pee","cee","LP","lee","VP","BP","mee","dee","WP","zP","fee","hee","GP","UP","Cg","Sg","gee","HP","xee","KP","yee","QP","qP","jP","XP","bee","YP","Cee","See","JP","ZP","wee","Iee","e3","vee","t3","kee","r3","Nee","s3","o3","Tee","n3","_ee","$ee","p3","a3","i3","u3","Eee","Aee","l3","c3","Ree","d3","Dee","m3","Fee","Oee","f3","Pee","h3","Mee","g3","Lee","rI","validate","MessageChannel","port1","cI","N3","lI","v3","Bee","dataIdNextNumber","tfjs","initWithThreadsCount","_3","pI","memoryOffset","registerTensor","zee","Vee","k3","vg","Pl","T3","getAsync","Ol","mI","Ml","Wee","jee","ds","kg","architecture","intelGPUGeneration","getIntelGPUGeneration","isIntel","Ng","device","numUsedBuffers","numFreeBuffers","freeBuffers","usedBuffers","numBytesUsed","acquireBuffer","$3","mappedAtCreation","mapAsync","GPUMapMode","WRITE","releaseBuffer","destroy","Tg","A3","E3","Ic","M3","Yee","createShaderModule","code","label","createComputePipeline","entryPoint","layout","Rt","Ao","Q","D3","Xee","workgroupSize","B3","isFromPixels","vc","isVec4","P3","F3","O3","getUserCode","uniforms","nte","atomic","variableTypes","tte","dispatchLayout","Qee","rte","ote","ete","L3","shaderKey","Zee","Jee","dispatch","GPUBytesPerElement","_g","MatMulProgramType","Ro","fI","computeDispatch","Y","computeWorkPerThreadForConv2d","Vl","computeWorkgroupInfoForMatMul","dI","computeWorkgroupSizeForConv2d","Bl","flatDispatchLayout","ae","isWebGPUSupported","zl","tilesFitEvenlyIntoShape","ate","Ku","elementsPerThread","gpu","MatMulReduceProgram","MatMulSplitKProgram","MatMulSmallOutputSizeProgram","MatMulPackedProgram","MatMulMax","ite","ute","maxComputeWorkgroupsPerDimension","cbrt","commandQueueOwnedIds","dispatchNumberInEncoder","tensorDataPendingDisposal","stagingPendingDisposal","uniformPendingDisposal","pipelineCache","currentCommandEncoder","currentComputePass","supportTimeQuery","features","adapterInfo","thresholdToIncreaseWorkgroups","bufferManager","querySet","createQuerySet","count","dummyCanvas","dummyContext","configure","GPUBufferUsage","STORAGE","COPY_SRC","COPY_DST","decRef","releaseResource","numBytesAllocatedInGPU","resourceInfo","external","GPUTexture","ensureComputePassEnded","submit","releaseUploadBuffer","createCommandEncoder","beginComputePass","MAP_READ","ensureCommandEncoderReady","copyBufferToBuffer","submitQueue","READ","getMappedRange","unmap","getCurrentTexture","getBufferData","zeroCopy","copyBuffer","defaultGpuBufferUsage","bufSize","GPUExternalTexture","createView","getTimeFromQuerySet","acquireUploadBuffer","MAP_WRITE","UNIFORM","writeBuffer","tensorToBinding","makeUniforms","createBindGroup","getBindGroupLayout","binding","resource","getComputePass","writeTimestamp","setPipeline","setBindGroup","dispatchWorkgroups","QUERY_RESOLVE","resolveQuerySet","BigUint64Array","powerPreference","requestAdapter","requiredFeatures","requiredLimits","maxComputeWorkgroupStorageSize","maxStorageBufferBindingSize","requestDevice","requestAdapterInfo","ADD","ATAN2","COMPLEX_MULTIPLY_IMAG","COMPLEX_MULTIPLY_REAL","DIV","EQUAL","GREATER","GREATER_EQUAL","INT_DIV","LESS","LESS_EQUAL","LOGICAL_AND","LOGICAL_OR","MAX","MIN","MOD","MUL","NOT_EQUAL","POW","PRELU","SQUARED_DIFFERENCE","SUB","V3","$g","pte","cte","mte","dte","fte","hte","xte","yte","bte","Cte","Ste","wte","Ite","vte","kte","Nte","Tte","_te","$te","Ete","Ate","Rte","Dte","Fte","Ote","Pte","Mte","Lte","Bte","gI","kc","ABS","ACOS","ACOSH","ASIN","ASINH","ATAN","ATANH","CEIL","COS","COSH","ELU","ERF","EXP","EXPM1","FLOOR","IS_FINITE","IS_INF","IS_NAN","LINEAR","LOG","LOG1P","LOGICAL_NOT","NEG","RELU","RELU6","LEAKYRELU","RECIPROCAL","ROUND","RSQRT","SELU","SIGMOID","SIGN","SIN","SINH","SOFTPLUS","SQRT","SQUARE","STEP","TAN","TANH","TO_INT","Vte","zte","Wte","Ute","Gte","Hte","Kte","qte","jte","Xte","Yte","Qte","Zte","Jte","ere","tre","rre","ore","nre","sre","are","ire","ure","pre","cre","lre","mre","dre","fre","hre","gre","xre","yre","bre","Cre","Sre","wre","Ire","vre","kre","Nre","Tre","_re","$re","Ere","ja","kt","pr","Gr","xI","Wl","Are","Rre","qu","z3","Dre","ju","Fre","Ore","Eg","isVectorA","sequentialAccessByThreads","addBias","hasPreluActivationWeights","fitAOuter","fitBOuter","fitInner","getShapeFit","tileInner","Pre","Ag","Mre","Rg","Dg","splitedDimInner","Fg","Og","fr","runWebGPUProgram","W3","me","U3","Xu","Lre","G3","Ul","Yu","useSharedMemoryWithA","useSharedMemoryWithB","lastDimensionSize","workPerThread","Dt","H3","po","K3","Hr","xe","opType","Ze","q3","j3","X3","Y3","Q3","Z3","J3","eM","tM","rM","oM","nM","sM","aM","iM","uM","pM","cM","lM","mM","dM","fM","hM","gM","xM","yM","bM","CM","SM","wM","IM","vM","kM","iTt","Bre","NM","Vre","TM","zre","_M","Wre","$M","Pg","Ure","EM","Mg","Lg","newDim","Gre","Nr","AM","Bg","reduceType","Kr","Hre","RM","Kre","DM","Nc","qre","FM","jre","OM","Xre","PM","Yre","MM","Qre","LM","Zre","BM","Jre","VM","Gl","poolType","Vg","Hl","zM","yI","WM","zg","eoe","UM","Wg","toe","GM","roe","HM","Ug","ooe","bI","fs","KM","noe","qM","soe","aoe","Tc","hasWeights","ioe","jM","CI","XM","Xa","YM","QM","SI","ZM","uoe","JM","Gg","Hg","poe","eL","Kg","offsetLength","Qu","tL","maxStorageBuffersPerShaderStage","coe","wI","rL","loe","qg","isChannelsLast","innerElementSize","tileAOuter","tileBOuter","jg","Xg","Yg","moe","doe","Qg","foe","oL","Zg","Jg","hoe","nL","goe","ex","xoe","Zu","sL","yoe","aL","boe","iL","tx","methodId","cropHeightBiggerThan1","cropWidthBiggerThan1","Coe","uL","Kl","pL","cL","rx","Soe","lL","woe","mL","Ioe","dL","ox","voe","fL","nx","hasPreluActivation","$c","Ec","koe","hL","sx","Noe","gL","ax","Toe","xL","II","yL","ql","bL","_oe","CL","$oe","SL","Eoe","wL","Aoe","IL","vI","vL","ix","kL","Roe","NL","jl","ux","Doe","Ac","TL","px","_L","Foe","$L","Ooe","EL","cx","importVideo","AL","Poe","kI","lx","expired","importExternalTexture","GPUTextureUsage","RENDER_ATTACHMENT","TEXTURE_BINDING","copyExternalImageToTexture","mx","offsetShape","scaleShape","RL","Moe","DL","Loe","FL","dx","Boe","OL","fx","aShape","Voe","NI","PL","zoe","ML","Woe","LL","Uoe","BL","Goe","VL","Hoe","zL","Koe","WL","qoe","UL","joe","GL","Xoe","HL","hx","Yoe","KL","Qoe","qL","Zoe","jL","Joe","XL","ene","YL","tne","QL","ZL","gx","xx","maxAllowRadius","elementsPerWorkgroup","rne","JL","one","eB","nne","tB","sne","rB","ane","oB","yx","xShape","nB","ine","sB","une","aB","pne","iB","cne","uB","bx","lne","pB","Xl","cB","lB","mB","mne","dB","Cx","TI","fB","dne","hB","fne","gB","hne","xB","gne","yB","_I","bB","xne","CB","yne","SB","bne","wB","Sx","Cne","IB","wx","Sne","vB","Ix","wne","kB","vx","fillSnippet","NB","Ine","TB","vne","_B","Hi","sumDupeIndices","sliceDimGreaterThanOne","updatesRank","indicesRank","kne","$B","kx","Nne","EB","Nx","cRank","Tne","AB","_ne","RB","$ne","DB","Ene","FB","Ane","OB","Rne","PB","$I","MB","Dne","LB","Fne","BB","One","VB","Tx","Pne","EI","zB","Mne","WB","Lne","UB","Bne","GB","HB","Vne","KB","zne","qB","_x","Wne","jB","Une","XB","Gne","YB","Hne","QB","$x","Ex","Rc","ZB","Kne","JB","Ax","qne","eV","jne","tV","Xne","rV","Yne","Qne","Zne","Jne","ese","dt2","ts2","getHours","padStart","getMinutes","getSeconds","getMilliseconds","folder","file","skipJoin","toLocaleLowerCase","bigint","defaults","config3","msgs","defined","reason","same","expected","mergeDeep","objects","isObject","prev","pVal","oVal","config","cacheModels","validateModels","wasmPath","wasmPlatformFetch","warmup","skipAllowed","deallocate","softwareKernels","flip","autoBrightness","brightness","contrast","sharpness","blur","saturation","hue","negative","sepia","vintage","kodachrome","technicolor","polaroid","pixelate","maxDetected","skipFrames","skipTime","minConfidence","minSize","mesh","keepInvalid","attention","antispoof","liveness","landmarks","skeleton","segmentation","ratio","vertexIdentity","colorMatrixWithAlpha","colorMatrixWithoutAlpha","convolution","collect","prefix","collection","RegExp","match2","GLProgram","gl2","vertexSource","fragmentSource","shader","uniform","GLImageFilter","drawCount","sourceTexture","lastInChain","currentFramebufferIndex","tempFramebuffers","filterChain","currentProgram","fxcanvas","shaderProgramCache","DRAW","INTERMEDIATE","vertices","pixelStorei","UNPACK_PREMULTIPLY_ALPHA_WEBGL","createFramebufferTexture","fbo","renderbuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","getTempFramebuffer","index2","flipY","drawArrays","floatSize","BYTES_PER_ELEMENT","vertSize","colorMatrix","matrix","amount","y6","desaturate","v10","lumR","lumG","lumB","desaturateLuminance","brownie","vintagePinhole","shiftToBGR","pixelSizeX","pixelSizeY","uniform2f","detectEdges","sobelX","sobelY","sharpen","emboss","size2","blurSizeX","blurSizeY","histogramEqualization","inputImage","rgb3","absMax","channel","maxValue","maxRange","factor","final","enh","fx2","_canvas","_image","_imageData","inCanvas","outCanvas","tmpCanvas","last","inputSum","cacheDiff","sumMethod","inputTensor","worker","Canvas","globalThis","copy","outputCanvas","process2","getTensor","_a2","_b2","_c2","HTMLMediaElement","tensor2","readyState","originalWidth","originalHeight","targetWidth","targetHeight","inCtx","translate","setTransform","supported","arr","tempCanvas","tempCtx","tempData","casted","maxVal","skip","skipFrame","diff","squared","diffSum","diffRelative","input1","input2","Env","simd","multithread","renderer","adapter","model","offscreen","agent","raw","platformMatch","arch","val","backends","tensorflow","TF_Version","isUsingGpuDevice","VERSION","VENDOR","RENDERER","SHADING_LANGUAGE_VERSION","webgpu","kernel","cpu","WebCam","devices","enumerateDevices","kind","webcamConfig","crop","element","el2","requestedConstraints","resizeMode","ideal","deviceId","paused","err","onloadeddata","settings","constraints","capabilities","getVideoTracks","getCapabilities","getConstraints","getSettings","models_exports","affectnet_mobilenet","age","anti_spoofing","blazeface","blazeface_back","blazeface_front","blazepose_detector","blazepose_full","blazepose_heavy","blazepose_lite","centernet","models_default","efficientpose","efficientpose_i_lite","efficientpose_ii_lite","efficientpose_iv","faceboxes","facemesh","facemesh_attention","facemesh_attention_pinto","facemesh_detection_full","facemesh_detection_short","faceres","faceres_deep","gear","gear_e1","gear_e2","gender","gender_ssrnet_imdb","handdetect","handlandmark_full","handlandmark_lite","handlandmark_sparse","handskeleton","handtrack","insightface_efficientnet_b0","insightface_ghostnet_strides1","insightface_ghostnet_strides2","insightface_mobilenet_emore","insightface_mobilenet_swish","meet","mobileface","mobilefacenet","models","movenet_lightning","movenet_multipose","movenet_thunder","nanodet","nanodet_e","nanodet_g","nanodet_m","nanodet_t","posenet","rvm","selfie","options","cacheSupported","verbose","modelStats","httpHandler","url","init4","setModelLoadOptions","loadModel","_d2","modelPathSegments","shortModelName","cachedModelName","sizeFromManifest","sizeLoadedWeights","sizeDesired","inCache","cachedModels","tfLoadOptions","model23","saveResult","config2","extensions","webGLattr","desynchronized","getSupportedExtensions","glv2","emit","kernelConfig","newKernelConfig","WEBGL_VERSION","current","constants","tf255","tf1","tf2","tf05","tf127","rgb","getBestBackend","updateBackend","registerCustomOps","newKernels","kernelMod","kernelFloorMod","kernelRotateWithOffset","defaultFlags","check","force","timeStamp","available","CANVAS2D_WILL_READ_FREQUENTLY","mt2","WEBGL_USE_SHAPES_UNIFORMS","WEBGL_EXP_CONV","newFlags","updatedFlags","initBackend","fakeOps","kernelNames","param","draw_exports","canvas2","init2","options2","person","getCanvasContext","rad2deg","theta","str","colorDepth","opt","useDepth","labels","startX","startY","localOptions2","line","lineHeight","shadowColor","fillText","labelColor","point","arc","pointSize","useCurves","cx2","moveTo","roundRect","lineTo","quadraticCurveTo","closePath","lines","points","fillPolygons","curves","xc2","yc2","arrow","to2","angle","font","drawPoints","drawLabels","drawBoxes","drawAttention","drawGestures","drawPolygons","drawGaze","faceLabels","bodyLabels","bodyPartLabels","objectLabels","handLabels","fingerLabels","gestureLabels","meshAnnotations","silhouette","lipsUpperOuter","lipsLowerOuter","lipsUpperInner","lipsLowerInner","lipsLowerSemiOuter","lipsUpperSemiOuter","lipsLowerSemiInner","lipsUpperSemiInner","rightEyeUpper0","rightEyeLower0","rightEyeUpper1","rightEyeLower1","rightEyeUpper2","rightEyeLower2","rightEyeLower3","rightEyebrowUpper","rightEyebrowLower","rightEyeIris","leftEyeUpper0","leftEyeLower0","leftEyeUpper1","leftEyeLower1","leftEyeUpper2","leftEyeLower2","leftEyeLower3","leftEyebrowUpper","leftEyebrowLower","leftEyeIris","midwayBetweenEyes","noseTip","noseBottom","noseRightCorner","noseLeftCorner","rightCheek","leftCheek","meshLandmarks","mouth","symmetryLine","blazeFaceLandmarks","leftEye","rightEye","nose","leftEar","rightEar","irisIndices","UV468","TRI468","VTX68","VTX33","VTX7","connectionsToIndices","connections","connection","pairsLips","pairsLeftEye","pairsLeftEyebrow","pairsLeftIris","pairsRightEye","pairsRightEyebrow","pairsRightIris","pairsFaceContour","LIPS_CONNECTIONS","LEFT_EYE_CONNECTIONS","LEFT_EYEBROW_CONNECTIONS","LEFT_IRIS_CONNECTIONS","RIGHT_EYE_CONNECTIONS","RIGHT_EYEBROW_CONNECTIONS","RIGHT_IRIS_CONNECTIONS","FACE_OVAL_CONNECTIONS","connectionsToIndices2","localOptions","MEDIAPIPE_FACE_MESH_KEYPOINTS_BY_CONTOUR","lips","leftEyebrow","leftIris","rightEyebrow","rightIris","faceOval","indexLabelPairs","flat","LANDMARKS_REFINEMENT_LIPS_CONFIG","LANDMARKS_REFINEMENT_LEFT_EYE_CONFIG","LANDMARKS_REFINEMENT_RIGHT_EYE_CONFIG","_f2","_g2","_h2","_i2","genderScore","distance","live","emotion2","roll","yaw","pitch","gaze","bearing","drawIrisElipse","annotations","sizeX","sizeY","drawGazeSpheres","Path2D","valX","valY","pathV","pathH","drawGazeArrows","strength","leftGaze","rightGaze","drawFacePolygons","drawFacePoints","drawFaceBoxes","inCanvas2","drawOptions","lineJoin","keypoints","part","connected4","addHandLine","middle","ring","pinky","thumb","j10","what","who","defaultLabels","bodyPart","finger","drawTime","promise","perfadd","blazeposecoords_exports","connected","kpt","anchorTensor","shoulders","hips","leftLegUpper","leftLegLower","leftFoot","leftTorso","leftArmUpper","leftArmLower","leftHand","leftHandPinky","leftHandIndex","leftHandThumb","leftEyeOutline","rightLegUpper","rightLegLower","rightFoot","rightTorso","rightArmUpper","rightArmLower","rightHand","rightHandPinky","rightHandIndex","rightHandThumb","rightEyeOutline","inputSize","numLayers","createAnchors","anchors3","layerId","anchorCount","lastSameStrideLayer","featureMapHeight","featureMapWidth","anchorId","loadDetector","modelSignature","tensorShape","model2","cropFactor","decodeBoxes","boxesTensor","anchor","xCenter","yCenter","xMin","yMin","xMax","yMax","decodeResults","logitsTensor","outputSize2","detectedBoxes","nms","boxRaw","detectedBox","detectBoxes","res","logitsRaw","boxesRaw","calc","coords","dist","scaleFact","newBox","inputSize2","skipped","cache","padding","lastTime","loadDetect","loadPose","prepareImage","cropBox","cropped","rescaleKeypoints","kpt4","positionRaw","fixKeypoints","leftPalm","leftWrist","leftIndex","rightPalm","rightWrist","rightIndex","detectLandmarks","heatmap","world","poseflag","poseScore","distances","keypointsRelative","presence","adjScore","distance2","kpts","annotations2","pt0","pt1","body4","predict","preparedImage","preparedBox","bodyResult","model3","labels2","class","inputSize3","last2","lastTime2","skipped2","process3","results","classes","id2","classVal","predict2","objectT","efficientposecoords_exports","connected2","kpt2","model4","leftLeg","rightLeg","torso","leftArm","rightArm","head","lastTime3","cache2","skipped3","load2","max2d","minScore","reshaped","newScore","coordinates","predict3","enhance2","resT","x6","y10","partScore","curr","xRaw","yRaw","getBoxSize","endPoint","startPoint","getBoxCenter","clampBox","getRawBox","scaleBoxCoordinates","confidence","cutAndResize","cutBox","enlargeBox","halfSize","squarifyBox","centers","calculateLandmarksBoundingBox","fixedRotationMatrix","normalizeRadians","computeRotation","point1","point2","buildTranslationMatrix","v12","v22","getColumnFrom2DArr","columnIndex","column","multiplyTransformMatrices","mat1","mat2","row","col","buildRotationMatrix","cosA","sinA","rotationMatrix","translationMatrix","translationTimesRotation","negativeTranslationMatrix","invertTransformMatrix","rotationComponent","translationComponent","invertedTranslation","rotatePoint","homogeneousCoordinate","generateAnchors","inputSize10","spec","anchors","gridRows","gridCols","anchorsNum","gridY","anchorY","gridX","anchorX","transformRawCoords","coordsRaw","boxSize","coordsScaled","coord","largeAngle","coordsRotationMatrix","coordsRotated","inverseRotationMatrix","boxCenter","offsets","correctFaceRotation","rotate","face4","centerRaw","rotated","model5","model6","findFaceCenter","calculateFaceBox","previousBox","calculatedBox","keypointsCount","faceBoxScaleFactor","inputSize4","inputSizeT","load3","decodeBoxes2","boxOutputs","boxStarts","boxSizes","boxSizesNormalized","centersNormalized","halfBoxSize","ends","startNormalized","endNormalized","getBoxes","resized","concat384","concat512","batch","bbox","rawBox","scaledBox","enlargedBox","squaredBox","inputSize5","irisEnlarge","leftOutline","rightOutline","eyeLandmarks","leftBounds","rightBounds","irisLandmarks","upperCenter","lowerCenter","numCoordinates","load4","replaceIrisCoords","rawCoords","newCoords","originalIndices","getLeftToRightEyeDepthDifference","leftEyeZ","rightEyeZ","getEyeBox","eyeInnerCornerIndex","eyeOuterCornerIndex","meshSize","flipped","getEyeCoords","eyeData","eyeBox","eyeBoxSize","eyeRawCoords","getAdjustedIrisCoords","irisCoords","direction","upperCenterZ","lowerCenterZ","averageZ","augmentIris","leftEyeBox","leftEyeBoxSize","leftEyeCrop","rightEyeBox","rightEyeBoxSize","rightEyeCrop","combined","eyePredictions","eyePredictionsData","leftEyeData","leftEyeRawCoords","leftIrisRawCoords","rightEyeData","rightEyeRawCoords","rightIrisRawCoords","leftToRightEyeDepthDifference","adjustedLeftIrisCoords","adjustedRightIrisCoords","augment","_j2","irisL","eyeL","irisR","eyeR","irisLDepth","irisRDepth","cache3","timestamp","model7","inputSize6","predict4","faces","newCache","meshRaw","boxScore","faceScore","equilized","confidenceT","faceConfidence","meshT","coordsReshaped","load5","model8","model9","triangulation","uvmap","last3","lastCount","lastTime4","skipped4","load6","predict5","idx","count2","_a3","grayscale","grayscaleSub","grayscaleMul","last4","lastTime5","lastCount2","skipped5","load7","enhance","predict6","descriptor","enhanced","genderT","gender2","argmax","ageIdx","ageT","desc","model10","expandFact","insidePoly","polygon","inside","model11","cached","skipped6","lastCount3","lastTime6","load8","predict7","model12","cached2","skipped7","lastCount4","lastTime7","load9","predict8","model13","last5","raceNames","ageWeights","lastCount5","lastTime8","skipped8","load10","predict9","race","_b3","ageDistribution","ageSorted","age2","model14","last6","lastCount6","lastTime9","skipped9","load11","modelPathAge","predict10","model15","last7","lastCount7","lastTime10","skipped10","rgb2","load12","modelPathGender","predict11","red","green","blue","redNorm","greenNorm","blueNorm","normalize2","model16","last8","lastCount8","lastTime11","skipped11","load13","predict12","last9","lastCount9","lastTime12","skipped12","load14","predict13","calculateGaze","pt2","offsetIris","eyeRatio","irisCenter","eyeCenter","eyeSize","eyeDiff","calculateFaceAngle","imageSize","subVectors","crossVectors","rotationMatrixToEulerAngle","r00","_r01","_r02","r10","r11","r12","r20","r21","r22","thetaX","thetaY","thetaZ","pts","yAxis","xAxis","zAxis","calculateCameraDistance","irisSize","cameraDistance","detectFace","_l2","_m2","_n2","_o2","_p2","_q2","_r2","_s2","_u2","_v2","_w2","ageRes","gearRes","genderRes","emotionRes","mobilefacenetRes","insightfaceRes","antispoofRes","livenessRes","descRes","faceRes","analyze","masked","ssrnet","embedding","Finger","nameMapping","0","1","2","3","4","pointsMapping","getName","getPoints","FingerCurl","none","half","full","FingerDirection","verticalUp","verticalDown","horizontalLeft","horizontalRight","diagonalUpRight","diagonalUpLeft","diagonalDownRight","diagonalDownLeft","5","6","7","FingerGesture","curls","directions","weightsRelative","curl","weight","total","detectedCurls","detectedDirections","fingerIdx","detectedCurl","expectedCurls","expectedCurl","detectedDirection","expectedDirections","expectedDirection","ThumbsUp","Victory","Point","MiddleFinger","OpenPalm","fingergesture_default","options3","HALF_CURL_START_LIMIT","NO_CURL_START_LIMIT","DISTANCE_VOTE_POWER","SINGLE_ANGLE_VOTE_POWER","TOTAL_ANGLE_VOTE_POWER","calculateSlope","point1x","point1y","point2x","point2y","slope","getSlopes","slopeXY","slopeYZ","angleOrientationAt","weightageAt","isVertical","isDiagonal","isHorizontal","estimateFingerCurl","midPoint","start_mid_x_dist","start_end_x_dist","mid_end_x_dist","start_mid_y_dist","start_end_y_dist","mid_end_y_dist","start_mid_z_dist","start_end_z_dist","mid_end_z_dist","start_mid_dist","start_end_dist","mid_end_dist","cos_in","fingerCurl","angleOfCurve","estimateHorizontalDirection","max_dist_x","estimatedDirection","estimateVerticalDirection","max_dist_y","estimateDiagonalDirection","reqd_vertical_direction","reqd_horizontal_direction","calculateFingerDirection","fingerSlopes","voteVertical","voteDiagonal","voteHorizontal","start_end_x_y_dist_ratio","max_dist","calc_start_point_x","calc_start_point_y","calc_end_point_x","calc_end_point_y","calcStartPoint","calcEndPoint","totalAngle","votes","fingerSlope","fingerVotes","estimate","slopesXY","slopesYZ","fingerCurls","fingerDirections","slopeAtXY","slopeAtYZ","point22","slopes","pointIndexAt","fingerPointsAt","fingerCurled","fingerPosition","estimatorRes","poses","gesture2","matchAgainst","body2","leftShoulder","rightShoulder","face2","zDiff","xDiff","openLeft","openRight","mouthOpen","chinDepth","iris2","sizeXLeft","sizeYLeft","areaLeft","sizeXRight","sizeYRight","areaRight","difference","leftIrisCenterX","rightIrisCenterX","rightIrisCenterY","leftIrisCenterY","hand2","fingers","pos","closest","best","highest","pose","getBoxSize2","getBoxCenter2","cutBoxFromImageAndResize","scaleBoxCoordinates2","palmLandmarks","scaledCoord","enlargeBox2","newHalfSize","squarifyBox2","maxEdge","normalizeRadians2","computeRotation2","buildTranslationMatrix2","dot2","getColumnFrom2DArr2","multiplyTransformMatrices2","buildRotationMatrix2","invertTransformMatrix2","rotatePoint2","handDetectorModel","handPoseModel","handPipeline","anchors2","HandDetector","anchorsTensor","inputSizeTensor","doubleInputSizeTensor","boxOffsets","boxCenterPoints","halfBoxSizes","startPoints","endPoints","rawPalmLandmarks","batched","predictions","normalizeBoxes","hands","normalizeLandmarks","hand3","scaled","palmBoxEnlargeFactor","handBoxEnlargeFactor","palmLandmarkIds","palmLandmarksPalmBase","palmLandmarksMiddleFingerBase","lastTime13","HandPipeline","handDetector","handPoseModel2","storedBoxes","detectedHands","xs2","ys2","rotatedPalmLandmarks","boxAroundPalm","boundingBox","boxAroundHand","box2","scaleFactor","originalBoxCenter","useFreshBox","currentBox","palmCenter","palmCenterNormalized","rotatedImage","getBoxForPalmLandmarks","croppedInput","handImage","keypointsReshaped","nextBoundingBox","getBoxForHandLandmarks","boxConfidence","fingerConfidence","topLeft","bottomRight","enlarged","meshAnnotations2","palm","predict14","estimateHands","fingerScore","load15","models2","modelOutputNodes","inputSize7","faceIndex","boxExpandFact","maxDetectorResolution","detectorExpandFact","skipped13","lastTime14","cache4","fingerMap","base","loadDetect2","loadSkeleton","detectHands","ratio2","rawScores","rawBoxes","classScores","filtered","classNum","nmsIndex","boxSlice","boxYX","boxData","boxFull","detectFingers","boxCrop","rawScore","coordsData","coordsNorm","predict15","skipTimeExtended","skipFrameExtended","handBox","oldCache","boxKpt","boxScale","boxScaleRaw","empty","persons","movenetcoords_exports","connected3","horizontal","kpt3","relative","vertical","model17","bufferedResult","interpolateTime","calc2","newResult","_x2","_y","_z2","elapsed","bufferedFactor","newBoxCoord","newKpt","_c3","_d3","_e2","_f3","_g3","_h3","_i3","kp2","landmark","newPersons","t12","interpolate","load16","predict16","rgba","bgRaw","fgRaw","expand","match_exports","descriptor1","descriptor2","options4","order","multiplier","similarity","normalizeDistance","root","clamp2","descriptors","lowestDistance","normalizedSimilarity","models_exports2","Models","validateModel","model18","maxJitter","cache5","bodyParts","pair","findIndex","tmp","higher","compare2","leftTo","rightTo","distanceLeft","distanceRight","jitter","padInput","rescaleBody","rescaledBoxes","model19","inputSize8","skipped14","cache6","bodies","load17","parseSinglePose","parseMultiPose","totalScore","predict17","last10","lastTime15","skipped15","inputSize9","scaleBox","load18","process4","strideSize","baseSize","scoresT","featuresT","boxesMaxT","boxIdxT","boxIdx","boxOffset","nmsBoxes","nmsScores","nmsIdx","_val","predict18","resizeT","normT","transposeT","partNames","partIds","jointName","connectedPartNames","poseChain","jointNameA","jointNameB","getBoundingBox","maxX","maxY","minX","minY","scalePoses","inputResolutionHeight","inputResolutionWidth","scaleY","scaleX","scalePose","scaledPoses","model20","MaxHeap","maxSize2","getElementValue","priorityQueue","numberOfElements","swim","exchange","sink","getValueAt","getOffsetPoint","keypoint","getImageCoords","outputStride2","heatmapY","heatmapX","squaredDistance","y12","x12","y22","x22","dx2","addVectors","model21","poseNetOutputs","localMaximumRadius","outputStride","squaredNmsRadius","traverse","edgeId","sourceKeypoint","targetId","displacements","offsetRefineStep","getDisplacement","getStridedIndexNearPoint","height2","width2","sourceKeypointIndices","displacement","displacedPoint","targetKeypoint","targetKeypointIndices","offsetPoint","targetKeyPointIndices","decodePose","displacementsFwd","displacementsBwd","tuples","parentJoinName","childJoinName","edgesFwd","childJointId","edgesBwd","parentJointId","numParts","numEdges","rootPoint","edge","sourceId","scoreIsMaximumInLocalWindow","keypointId","localMaximum","yStart","yEnd","yCurrent","xStart","xEnd","xCurrent","buildPartWithScoreQueue","minConfidence2","numKeypoints","enqueue","withinRadius","correspondingKeypoint","getInstanceScore","existingPoses","notOverlappedKeypointScores","dequeue","rootImageCoords","predict19","results3d","buffers","decoded","load19","outputNodes2","init3","r1i","r2i","r3i","r4i","downsample_ratio","load20","model22","getRGBA","fgr","pha","getState","predict20","r1o","r2o","r3o","r4o","load21","predict21","simpleOps","ignoreOps","ops","missing","currentInstance","totalSizeFromManifest","totalSizeWeights","totalSizeLoading","percentageLoaded","numLoadedModels","numDefinedModels","_A2","ssrnetage","ssrnetgender","insightface","blazepose","blazeposedetect","movenet","handpose","models3","stats","join2","person2","extractXY","_numTensors","_analyzeMemoryLeaks","_checkSanity","_sanity","_loops","face3","body3","warmupBitmap","b64toBlob","base64","res2","blob","bitmap","warmupCanvas","canvas3","naturalWidth","naturalHeight","warmupNode","atob2","decodeJpeg","expanded","runInference","runCompile","ENGINE_COMPILE_ONLY","backendType","webGLBackend","numTensorsStart","compiledModels","modelName","numTensorsEnd","userConfig","currentTensors","previousTensors","leaked","event","events","Event","tfVersion","seal","EventTarget","faceTriangulation","faceUVMap","envTemp","currentBackend","processed","firstImageTensor","secondImageTensor","loadModels","ms2","kernelArr","perc","timeStart","inputProcess","totalFrames","cachedFrames","cacheCheck","bodyRes","handRes","objectRes","bodyConfig","handConfig","gestureRes","run","delay","sleep","getVoice","getVoices","talk","voiceType","voice","names","langs","cur"],"mappings":"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A8mL,EACA,EACA9mL,EACA,EACA,EACA,EACA,EACA,KAGJyiL,SAAU,KACRzpN,EAAOopN,UAAU,IAEnBI,IAAMnpN,IACJA,GAAYA,GAAY,GAAK,IAAMmD,KAAKsC,GACxC,MAAMuiB,EAAM7kB,KAAK6kB,IAAIhoB,GACfi9B,EAAM95B,KAAK85B,IAAIj9B,GACf0tN,EAAO,KACPC,EAAO,KACPC,EAAO,KACbjuN,EAAOytN,YAAY,CACjBM,EAAO1lM,GAAO,EAAI0lM,GAAQzwL,GAAOywL,EACjCC,EAAO3lM,GAAO2lM,EAAO1wL,GAAO0wL,EAC5BC,EAAO5lM,GAAO4lM,EAAO3wL,GAAO,EAAI2wL,GAChC,EACA,EACAF,EAAO1lM,GAAO0lM,EAAa,KAANzwL,EACrB0wL,EAAO3lM,GAAO,EAAI2lM,GAAc,IAAN1wL,EAC1B2wL,EAAO5lM,GAAO4lM,GAAc,KAAP3wL,EACrB,EACA,EACAywL,EAAO1lM,GAAO0lM,EAAOzwL,IAAQ,EAAIywL,GACjCC,EAAO3lM,GAAO2lM,EAAO1wL,EAAM0wL,EAC3BC,EAAO5lM,GAAO,EAAI4lM,GAAQ3wL,EAAM2wL,EAChC,EACA,EACA,EACA,EACA,EACA,EACA,KAGJC,oBAAqB,KACnBluN,EAAOytN,YAAY,CACjB,SACA,QACA,SACA,GACC,KACD,SACA,QACA,SACA,GACC,KACD,SACA,QACA,SACA,GACC,KACD,EACA,EACA,EACA,EACA,KAGJ/D,MAAO,KACL1pN,EAAOytN,YAAY,CACjB,KACA,SACA,UACA,EACA,EACA,KACA,SACA,UACA,EACA,EACA,KACA,SACA,UACA,EACA,EACA,EACA,EACA,EACA,EACA,KAGJU,QAAS,KACPnuN,EAAOytN,YAAY,CACjB,kBACA,oBACC,kBACD,EACA,mBACC,oBACD,kBACA,mBACA,GACC,kBACD,oBACC,mBACD,mBACA,GACC,kBACD,EACA,EACA,EACA,EACA,KAGJW,eAAgB,KACdpuN,EAAOytN,YAAY,CACjB,kBACA,mBACC,mBACD,EACA,kBACA,mBACA,kBACA,mBACA,EACA,kBACA,mBACC,kBACD,kBACA,EACA,kBACA,EACA,EACA,EACA,EACA,KAGJ7D,WAAY,KACV5pN,EAAOytN,YAAY,CACjB,oBACC,mBACA,mBACD,EACA,mBACC,mBACD,oBACC,mBACD,EACA,oBACC,oBACA,kBACD,mBACA,EACA,kBACA,EACA,EACA,EACA,EACA,KAGJ5D,YAAa,KACX7pN,EAAOytN,YAAY,CACjB,oBACC,mBACA,mBACD,EACA,oBACC,kBACD,oBACC,mBACD,GACC,mBACA,kBACA,kBACD,kBACA,EACA,mBACA,EACA,EACA,EACA,EACA,KAGJ3D,SAAU,KACR9pN,EAAOytN,YAAY,CACjB,OACC,MACA,KACD,EACA,GACC,KACD,OACC,KACD,EACA,GACC,MACA,KACD,MACA,EACA,EACA,EACA,EACA,EACA,EACA,KAGJY,WAAY,KACVruN,EAAOytN,YAAY,CACjB,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,KAGJxC,YAAcyC,IACZ,MAAMzgL,EAAI,IAAI6N,aAAa4yK,GACrBY,EAAa,EAAIjC,EAAS5pN,MAC1B8rN,EAAa,EAAIlC,EAAS1pN,OAC1BqlJ,EAAUpI,EAAcqrE,IACzBjjE,IAELwjE,EAAI5hE,WAAW5B,EAAQ4jE,QAAQ,KAAM3+K,GACrCu+K,EAAIgD,UAAUxmE,EAAQ4jE,QAAQ,MAAO0C,EAAYC,GACjDlsN,MAEFosN,YAAa,KACXzuN,EAAOirN,YAAY/hN,KAAKtN,KAAM,CAC5B,EACA,EACA,EACA,GACC,EACD,EACA,EACA,EACA,KAGJ8yN,OAAQ,KACN1uN,EAAOirN,YAAY/hN,KAAKtN,KAAM,EAC3B,EACD,EACA,GACC,EACD,EACA,GACC,EACD,EACA,KAGJ+yN,OAAQ,KACN3uN,EAAOirN,YAAY/hN,KAAKtN,KAAM,EAC3B,GACA,GACA,EACD,EACA,EACA,EACA,EACA,EACA,KAGJgzN,QAAUjB,IACR,MAAMjkL,EAAIikL,GAAU,EACpB3tN,EAAOirN,YAAY/hN,KAAKtN,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B,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,mBAElBC,IAAS,CACX,IACA,GACA,IACA,GACA,EACA,GACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,GACA,GACA,EACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,IACA,GACA,GACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,GACA,GACA,IACA,GACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,EACA,IACA,GACA,GACA,IACA,IACA,IACA,EACA,IACA,IACA,GACA,IACA,IACA,GACA,GACA,GACA,GACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,GACA,IACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,GACA,GACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,GACA,GACA,IACA,GACA,IACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,EACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,IACA,GACA,IACA,IACA,GACA,GACA,GACA,GACA,IACA,EACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,GACA,GACA,GACA,IACA,EACA,GACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,GACA,EACA,GACA,GACA,GACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,GACA,GACA,EACA,IACA,IACA,GACA,EACA,GACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,EACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,GACA,IACA,GACA,GACA,IACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,GACA,GACA,IACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,GACA,EACA,EACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,GACA,EACA,GACA,IACA,GACA,GACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,GACA,GACA,IACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,GACA,IACA,GACA,GACA,IACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,EACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,EACA,IACA,GACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,EACA,GACA,EACA,IACA,IACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,IACA,GACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,EACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,GACA,GACA,EACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,GACA,IACA,IACA,GACA,GACA,GACA,GACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,GACA,IACA,GACA,GACA,GACA,IACA,IACA,GACA,GACA,GACA,GACA,IACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,EACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,EACA,IACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,GACA,IACA,EACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,EACA,IACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,GACA,GACA,EACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,GACA,EACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,EACA,GACA,IACA,GACA,IACA,IACA,IACA,EACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,EACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEEC,IAAQ,CAEV,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEA,GACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IAEA,IACA,EACA,IACA,EACA,GACA,GACA,EACA,IACA,IAEA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEA,GACA,GACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GAEA,GACA,GACA,GACA,IACA,IACA,IACA,GACA,KAEEC,IAAQ,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,KAC1JC,IAAO,CAAC,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,KAC3BF,IAAMp/N,IAAKhB,GAAMkgO,IAAMlgO,IACvBqgO,IAAMr/N,IAAKhB,GAAMkgO,IAAMlgO,IACxBsgO,IAAKt/N,IAAKhB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EAAEo0L,EAAOryG,KAAaA,EAAQ/hF,IAAKmpN,GAAW,CAACA,EAAQ/0B,KAASgtC,OAE/IC,KADgC,IAAI/rK,IAAI6rK,KACL,CACrC,GACA,IACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IAEA,IACA,GACA,GACA,GACA,EACA,IACA,IACA,IACA,IAEA,GACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IAEA,IACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IAEA,GACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IAEA,IACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IAEA,GACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IAEA,IACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,MAGEG,IAAuC,CACzC,GACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEA,IACA,IACA,IACA,IACA,IACA,IACA,IAEA,IACA,GACA,IACA,GACA,GACA,GACA,GACA,IACA,IAEA,IACA,GACA,GACA,GACA,GACA,GACA,IAEA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEA,IACA,IACA,IACA,IACA,IACA,IACA,IAEA,GACA,IACA,GACA,GACA,GACA,GAEA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEA,IACA,GACA,GACA,IACA,GACA,IACA,GACA,KAGEC,IAAwC,CAC1C,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEA,IACA,IACA,IACA,IACA,IACA,IACA,IAEA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEA,IACA,IACA,IACA,IACA,IACA,IACA,IAEA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEA,IACA,IACA,IACA,IACA,IACA,IACA,IAEA,IACA,IACA,IACA,IACA,IACA,IAEA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAMF,SAASjG,IAAWhyL,EAAG9nC,GACrB,IAAIsrN,EAAKC,EAAKC,EAAKwI,EAAKn9N,EAAImpO,EAAKC,EAAKC,EAAKC,EAC3C,IAAKhB,IAAarF,YAAkF,KAAhC,OAAlCxO,EAAM6T,IAAa/E,iBAAsB,EAAS9O,EAAI5sN,QACtF,OACF,IAAI8oC,EAAI23L,IAAa/E,WAAWliM,QAehC,GAdI4P,EAAEqxD,QACJ3xD,EAAI8J,IAAQ9J,EAAG,UAAW,IAAMM,EAAEqxD,QAChCrxD,EAAE6pL,SACJnqL,EAAI8J,IAAQ9J,EAAG,WAAYM,EAAE6pL,SAC3B7pL,EAAEs4L,cACJ54L,EAAI8J,IAAQ9J,EAAG,gBAAiB,IAAMM,EAAEs4L,cACtCt4L,EAAEmoL,MACJzoL,EAAI8J,IAAQ9J,EAAG,QAASM,EAAEmoL,MACxBnoL,EAAEu4L,WACJ74L,EAAI8J,IAAQ9J,EAAG,aAAc,IAAMM,EAAEu4L,WACnCv4L,EAAExU,OACJkU,EAAI8J,IAAQ9J,EAAG,SAAU,IAAMM,EAAExU,OAC/BwU,EAAEw4L,OACJ94L,EAAI8J,IAAQ9J,EAAG,SAAU,IAAMM,EAAEw4L,OAC/Bx4L,EAAE5sC,SAAW4sC,EAAE5sC,QAAQwD,OAAS,EAAG,CACrC,MAAM6hO,EAAWz4L,EAAE5sC,QAAQsD,IAAK0lC,GAAM,GAAGlmC,KAAK43E,MAAM,IAAM1xC,EAAEi1D,WAAWj1D,EAAEhpC,WACrEqlO,EAAS7hO,OAAS,IACpB6hO,EAAS7hO,OAAS,GACpB8oC,EAAI8J,IAAQ9J,EAAG,aAAc+4L,EAASjtK,KAAK,OAEkB,OAA1Dk4J,EAA4B,OAArBD,EAAMzjL,EAAEjtC,eAAoB,EAAS0wN,EAAIoO,YAAiB,EAASnO,EAAIgV,QACjFh5L,EAAI8J,IAAQ9J,EAAG,SAAUkwL,IAAQ5vL,EAAEjtC,SAAS8+N,MAAM6G,SACU,OAAzD3pO,EAA2B,OAArBm9N,EAAMlsL,EAAEjtC,eAAoB,EAASm5N,EAAI2F,YAAiB,EAAS9iO,EAAG4pO,OAC/Ej5L,EAAI8J,IAAQ9J,EAAG,QAASkwL,IAAQ5vL,EAAEjtC,SAAS8+N,MAAM8G,QACY,OAA1DR,EAA4B,OAArBD,EAAMl4L,EAAEjtC,eAAoB,EAASmlO,EAAIrG,YAAiB,EAASsG,EAAIS,SACjFl5L,EAAI8J,IAAQ9J,EAAG,UAAWkwL,IAAQ5vL,EAAEjtC,SAAS8+N,MAAM+G,UACS,OAAzDP,EAA4B,OAArBD,EAAMp4L,EAAEjtC,eAAoB,EAASqlO,EAAIS,WAAgB,EAASR,EAAIS,WAChFp5L,EAAI8J,IAAQ9J,EAAG,SAAUkwL,IAAQ5vL,EAAEjtC,SAAS8lO,KAAKC,WACnD5I,IAAOh4N,EAAKwnC,EAAGM,EAAErqC,IAAI,GAAIqqC,EAAErqC,IAAI,GAAI0hO,KAErC,SAAS0B,IAAe/4L,EAAG9nC,GACzB,IAAIsrN,EAAKC,EAAKC,EAAKwI,EACnB,IAA8B,OAAxB1I,EAAMxjL,EAAEg5L,kBAAuB,EAASxV,EAAIkR,eAA0C,OAAxBjR,EAAMzjL,EAAEg5L,kBAAuB,EAASvV,EAAIiR,YAAY,IAAK,CAC/Hx8N,EAAIS,YAAc0+N,IAAapH,SAAW,2BAA6BoH,IAAaj/N,MACpFF,EAAIG,YACJ,MAAM4gO,EAAQ/iO,KAAKgf,IAAI8qB,EAAEg5L,YAAYtE,YAAY,GAAG,GAAK10L,EAAEg5L,YAAYtE,YAAY,GAAG,IAAM,EACtFwE,EAAQhjO,KAAKgf,IAAI8qB,EAAEg5L,YAAYtE,YAAY,GAAG,GAAK10L,EAAEg5L,YAAYtE,YAAY,GAAG,IAAM,EAC5Fx8N,EAAIK,QAAQynC,EAAEg5L,YAAYtE,YAAY,GAAG,GAAI10L,EAAEg5L,YAAYtE,YAAY,GAAG,GAAIuE,EAAOC,EAAO,EAAG,EAAG,EAAIhjO,KAAKsC,IAC3GN,EAAIU,SACAy+N,IAAa9F,eACfr5N,EAAIY,UAAYu+N,IAAapH,SAAW,2BAA6BoH,IAAaj/N,MAClFF,EAAIa,QAGR,IAA8B,OAAxB2qN,EAAM1jL,EAAEg5L,kBAAuB,EAAStV,EAAIsQ,gBAA2C,OAAxB9H,EAAMlsL,EAAEg5L,kBAAuB,EAAS9M,EAAI8H,aAAa,IAAK,CACjI97N,EAAIS,YAAc0+N,IAAapH,SAAW,2BAA6BoH,IAAaj/N,MACpFF,EAAIG,YACJ,MAAM4gO,EAAQ/iO,KAAKgf,IAAI8qB,EAAEg5L,YAAYhF,aAAa,GAAG,GAAKh0L,EAAEg5L,YAAYhF,aAAa,GAAG,IAAM,EACxFkF,EAAQhjO,KAAKgf,IAAI8qB,EAAEg5L,YAAYhF,aAAa,GAAG,GAAKh0L,EAAEg5L,YAAYhF,aAAa,GAAG,IAAM,EAC9F97N,EAAIK,QAAQynC,EAAEg5L,YAAYhF,aAAa,GAAG,GAAIh0L,EAAEg5L,YAAYhF,aAAa,GAAG,GAAIiF,EAAOC,EAAO,EAAG,EAAG,EAAIhjO,KAAKsC,IAC7GN,EAAIU,SACAy+N,IAAa9F,eACfr5N,EAAIY,UAAYu+N,IAAapH,SAAW,2BAA6BoH,IAAaj/N,MAClFF,EAAIa,SAIV,SAASogO,IAAgBn5L,EAAG9nC,GAC1B,IAAIsrN,EACJ,GAAI6T,IAAahF,WAAmC,OAArB7O,EAAMxjL,EAAEjtC,eAAoB,EAASywN,EAAIqO,QAA4B,qBAAXuH,OAAwB,CAC/GlhO,EAAIS,YAAc,OAClB,MAAM0gO,EAAOr5L,EAAErqC,IAAI,GAAKqqC,EAAErqC,IAAI,GAAK,EAAIqqC,EAAErqC,IAAI,GAAKi6N,IAAQ5vL,EAAEjtC,SAAS8+N,MAAM8G,KAAO,GAC5EW,EAAOt5L,EAAErqC,IAAI,GAAKqqC,EAAErqC,IAAI,GAAK,EAAIqqC,EAAErqC,IAAI,GAAKi6N,IAAQ5vL,EAAEjtC,SAAS8+N,MAAM+G,OAAS,GAC9EW,EAAQ,IAAIH,OAAO,aACnBp5L,EAAErqC,IAAI,GAAKqqC,EAAErqC,IAAI,GAAK,KAAKqqC,EAAErqC,IAAI,wBAEjC0jO,KAAQr5L,EAAErqC,IAAI,gBACd0jO,KAAQr5L,EAAErqC,IAAI,GAAKqqC,EAAErqC,IAAI,gBACzBqqC,EAAErqC,IAAI,GAAKqqC,EAAErqC,IAAI,GAAK,KAAKqqC,EAAErqC,IAAI,GAAKqqC,EAAErqC,IAAI,YAE5C6jO,EAAQ,IAAIJ,OAAO,aACnBp5L,EAAErqC,IAAI,MAAMqqC,EAAErqC,IAAI,GAAKqqC,EAAErqC,IAAI,GAAK,wBAElCqqC,EAAErqC,IAAI,MAAM2jO,eACZt5L,EAAErqC,IAAI,GAAKqqC,EAAErqC,IAAI,MAAM2jO,eACvBt5L,EAAErqC,IAAI,GAAKqqC,EAAErqC,IAAI,MAAMqqC,EAAErqC,IAAI,GAAKqqC,EAAErqC,IAAI,GAAK,WAEnDuC,EAAIU,OAAO4gO,GACXthO,EAAIU,OAAO2gO,IAGf,SAASE,IAAez5L,EAAG9nC,GACzB,IAAIsrN,EACJ,GAAI6T,IAAahF,WAAmC,OAArB7O,EAAMxjL,EAAEjtC,eAAoB,EAASywN,EAAIqV,KAAKa,WAAa15L,EAAEjtC,SAAS8lO,KAAKC,SAAW94L,EAAEg5L,YAAYtE,aAAe10L,EAAEg5L,YAAYhF,cAAgBh0L,EAAEg5L,YAAYtE,YAAY,IAAM10L,EAAEg5L,YAAYhF,aAAa,GAAI,CAC7O97N,EAAIS,YAAc,OAClBT,EAAIY,UAAY,OAChB,MAAM6gO,EAAW,CACf35L,EAAEg5L,YAAYtE,YAAY,GAAG,GAAKx+N,KAAK85B,IAAIgQ,EAAEjtC,SAAS8lO,KAAKC,SAAW94L,EAAEjtC,SAAS8lO,KAAKa,SAAW15L,EAAErqC,IAAI,GACvGqqC,EAAEg5L,YAAYtE,YAAY,GAAG,GAAKx+N,KAAK6kB,IAAIilB,EAAEjtC,SAAS8lO,KAAKC,SAAW94L,EAAEjtC,SAAS8lO,KAAKa,SAAW15L,EAAErqC,IAAI,IAEzGg8N,IAAMz5N,EAAK,CAAC8nC,EAAEg5L,YAAYtE,YAAY,GAAG,GAAI10L,EAAEg5L,YAAYtE,YAAY,GAAG,IAAK,CAACiF,EAAS,GAAIA,EAAS,IAAK,GAC3G,MAAMC,EAAY,CAChB55L,EAAEg5L,YAAYhF,aAAa,GAAG,GAAK99N,KAAK85B,IAAIgQ,EAAEjtC,SAAS8lO,KAAKC,SAAW94L,EAAEjtC,SAAS8lO,KAAKa,SAAW15L,EAAErqC,IAAI,GACxGqqC,EAAEg5L,YAAYhF,aAAa,GAAG,GAAK99N,KAAK6kB,IAAIilB,EAAEjtC,SAAS8lO,KAAKC,SAAW94L,EAAEjtC,SAAS8lO,KAAKa,SAAW15L,EAAErqC,IAAI,IAE1Gg8N,IAAMz5N,EAAK,CAAC8nC,EAAEg5L,YAAYhF,aAAa,GAAG,GAAIh0L,EAAEg5L,YAAYhF,aAAa,GAAG,IAAK,CAAC4F,EAAU,GAAIA,EAAU,IAAK,IAGnH,SAASC,IAAiB75L,EAAG9nC,GAC3B,GAAIm/N,IAAajF,cAAgBpyL,EAAE+8K,KAAKnmN,QAAU,IAAK,CACrDsB,EAAIO,UAAY,EAChB,IAAK,IAAI9B,EAAI,EAAGA,EAAIk/N,IAAOj/N,OAAS,EAAGD,IAAK,CAC1C,MAAM26N,EAAS,CAACuE,IAAW,EAAJl/N,EAAQ,GAAIk/N,IAAW,EAAJl/N,EAAQ,GAAIk/N,IAAW,EAAJl/N,EAAQ,IAAID,IAAKmpN,GAAW7/K,EAAE+8K,KAAK8C,IAChGwR,IAAMn5N,EAAKo5N,EAAQ+F,KAErB0B,IAAe/4L,EAAG9nC,IAGtB,SAAS4hO,IAAe95L,EAAG9nC,GACzB,GAAIm/N,IAAatF,WACf,IAAU,MAAL/xL,OAAY,EAASA,EAAE+8K,KAAKnmN,SAAW,IAC1C,IAAK,IAAID,EAAI,EAAGA,EAAIqpC,EAAE+8K,KAAKnmN,OAAQD,IACjCg6N,IAAMz4N,EAAK8nC,EAAE+8K,KAAKpmN,GAAG,GAAIqpC,EAAE+8K,KAAKpmN,GAAG,GAAIqpC,EAAE+8K,KAAKpmN,GAAG,GAAI0gO,KACjDA,IAAanF,gBACX6F,IAAiCpgO,SAAShB,IAC5Cg6N,IAAMz4N,EAAK8nC,EAAE+8K,KAAKpmN,GAAG,GAAIqpC,EAAE+8K,KAAKpmN,GAAG,GAAIqpC,EAAE+8K,KAAKpmN,GAAG,GAAK,IAAK0gO,KACzDW,IAAqCrgO,SAAShB,IAChDg6N,IAAMz4N,EAAK8nC,EAAE+8K,KAAKpmN,GAAG,GAAIqpC,EAAE+8K,KAAKpmN,GAAG,GAAIqpC,EAAE+8K,KAAKpmN,GAAG,GAAK,IAAK0gO,KACzDY,IAAsCtgO,SAAShB,IACjDg6N,IAAMz4N,EAAK8nC,EAAE+8K,KAAKpmN,GAAG,GAAIqpC,EAAE+8K,KAAKpmN,GAAG,GAAIqpC,EAAE+8K,KAAKpmN,GAAG,GAAK,IAAK0gO,WAIjE,IAAK,MAAO3yL,EAAG87K,KAAQhqN,OAAO+1D,SAAc,MAALvsB,OAAY,EAASA,EAAEg5L,cAAgB,IAAK,CACjF,KAAa,MAAPxY,OAAc,EAASA,EAAI,IAC/B,SACF,MAAM7zK,EAAK6zK,EAAI,GACfmQ,IAAMz4N,EAAKy0C,EAAG,GAAIA,EAAG,GAAI,EAAG0qL,KACxBA,IAAarF,YACf9B,IAAOh4N,EAAKwsC,EAAGiI,EAAG,GAAIA,EAAG,GAAI0qL,MAKvC,SAAS0C,IAAc/5L,EAAG9nC,GACpBm/N,IAAapF,WACfp5N,IAAKX,EAAK8nC,EAAErqC,IAAI,GAAIqqC,EAAErqC,IAAI,GAAIqqC,EAAErqC,IAAI,GAAIqqC,EAAErqC,IAAI,GAAI0hO,KAGtD,SAASvmO,IAAKkpO,EAAWvkO,EAAQwkO,GAE/B,GADA5C,IAAezc,GAAU6U,IAAUwK,IAC9BxkO,IAAWukO,EACd,OACF,MAAM9hO,EAAMy3N,IAAiBqK,GAC7B,GAAK9hO,EAAL,CAEAA,EAAI45N,KAAOuF,IAAavF,KACxB55N,EAAIS,YAAc0+N,IAAaj/N,MAC/BF,EAAIY,UAAYu+N,IAAaj/N,MAC7B,IAAK,MAAM4nC,KAAKvqC,EACdskO,IAAc/5L,EAAG9nC,GACjB85N,IAAWhyL,EAAG9nC,GACV8nC,EAAE+8K,MAAQ/8K,EAAE+8K,KAAKnmN,OAAS,IAC5BkjO,IAAe95L,EAAG9nC,GAClB2hO,IAAiB75L,EAAG9nC,GACpBihO,IAAgBn5L,EAAG9nC,GACnBuhO,IAAez5L,EAAG9nC,KAMxB,SAAS7E,IAAK2mO,EAAWvkO,EAAQwkO,GAC/B,IAAIzW,EAAKC,EACT,MAAM4M,EAAgBzV,GAAU6U,IAAUwK,GAC1C,IAAKxkO,IAAWukO,EACd,OACF,MAAM9hO,EAAMy3N,IAAiBqK,GAC7B,GAAK9hO,EAAL,CAEAA,EAAIgiO,SAAW,QACf,IAAK,IAAIvjO,EAAI,EAAGA,EAAIlB,EAAOmB,OAAQD,IAAK,CAKtC,GAJAuB,EAAIS,YAAc03N,EAAcj4N,MAChCF,EAAIY,UAAYu3N,EAAcj4N,MAC9BF,EAAIO,UAAY43N,EAAc53N,UAC9BP,EAAI45N,KAAOzB,EAAcyB,KACrBzB,EAAc4B,WAAax8N,EAAOkB,GAAGhB,KAAgC,IAAzBF,EAAOkB,GAAGhB,IAAIiB,SAC5DiC,IAAKX,EAAKzC,EAAOkB,GAAGhB,IAAI,GAAIF,EAAOkB,GAAGhB,IAAI,GAAIF,EAAOkB,GAAGhB,IAAI,GAAIF,EAAOkB,GAAGhB,IAAI,GAAI06N,GAC9EA,EAAc2B,aAAmD,OAAnCxO,EAAM6M,EAAckC,iBAAsB,EAAS/O,EAAI5sN,QAAU,GAAG,CACpG,IAAI8oC,EAAI2wL,EAAckC,WAAWniM,QACjCsP,EAAI8J,IAAQ9J,EAAG,UAAW,IAAMjqC,EAAOkB,GAAG06F,OAC1C6+H,IAAOh4N,EAAKwnC,EAAGjqC,EAAOkB,GAAGhB,IAAI,GAAIF,EAAOkB,GAAGhB,IAAI,GAAI06N,GAGvD,GAAIA,EAAc0B,YAAct8N,EAAOkB,GAAGwjO,UACxC,IAAK,IAAIxtL,EAAK,EAAGA,EAAKl3C,EAAOkB,GAAGwjO,UAAUvjO,OAAQ+1C,IAC3Cl3C,EAAOkB,GAAGwjO,UAAUxtL,GAAI0kD,OAA2C,IAAlC57F,EAAOkB,GAAGwjO,UAAUxtL,GAAI0kD,QAE9Dn5F,EAAIY,UAAYi3N,IAAWt6N,EAAOkB,GAAGwjO,UAAUxtL,GAAI42C,SAAS,GAAI8sI,GAChEM,IAAMz4N,EAAKzC,EAAOkB,GAAGwjO,UAAUxtL,GAAI42C,SAAS,GAAI9tF,EAAOkB,GAAGwjO,UAAUxtL,GAAI42C,SAAS,GAAI,EAAG8sI,IAG5F,GAAIA,EAAc2B,aAAuD,OAAvCvO,EAAM4M,EAAcmC,qBAA0B,EAAS/O,EAAI7sN,QAAU,GAAKnB,EAAOkB,GAAGwjO,UAAW,CAC/HjiO,EAAI45N,KAAOzB,EAAcyB,KACzB,IAAK,MAAMnlL,KAAMl3C,EAAOkB,GAAGwjO,UAAW,CACpC,IAAKxtL,EAAG0kD,OAAsB,IAAb1kD,EAAG0kD,MAClB,SACF,IAAI3xD,EAAI2wL,EAAcmC,eAAepiM,QACrCsP,EAAI8J,IAAQ9J,EAAG,UAAWiN,EAAGytL,MAC7B16L,EAAI8J,IAAQ9J,EAAG,UAAW,IAAMiN,EAAG0kD,OACnC6+H,IAAOh4N,EAAKwnC,EAAGiN,EAAG42C,SAAS,GAAI52C,EAAG42C,SAAS,GAAI8sI,IAGnD,GAAIA,EAAc+B,cAAgB38N,EAAOkB,GAAGwjO,WAAa1kO,EAAOkB,GAAGqiO,YACjE,IAAK,MAAMoB,KAAQ5jO,OAAOC,OAAOhB,EAAOkB,GAAGqiO,aACzC,IAAK,MAAMqB,KAAcD,EACvB5I,IAAOt5N,EAAKmiO,EAAYhK,KAOlC,SAAS/8N,IAAK0mO,EAAWvkO,EAAQwkO,GAC/B,IAAIzW,EAAKC,EACT,MAAM4M,EAAgBzV,GAAU6U,IAAUwK,GAC1C,IAAKxkO,IAAWukO,EACd,OACF,MAAM9hO,EAAMy3N,IAAiBqK,GAC7B,GAAK9hO,EAAL,CAEAA,EAAIgiO,SAAW,QACfhiO,EAAI45N,KAAOzB,EAAcyB,KACzB,IAAK,MAAMh8N,KAAKL,EAAQ,CACtB,GAAI46N,EAAc4B,UAAW,CAI3B,GAHA/5N,EAAIS,YAAc03N,EAAcj4N,MAChCF,EAAIY,UAAYu3N,EAAcj4N,MAC9BS,IAAKX,EAAKpC,EAAEH,IAAI,GAAIG,EAAEH,IAAI,GAAIG,EAAEH,IAAI,GAAIG,EAAEH,IAAI,GAAI06N,GAC9CA,EAAc2B,aAAmD,OAAnCxO,EAAM6M,EAAcqC,iBAAsB,EAASlP,EAAI5sN,QAAU,EAAG,CACpG,IAAI8oC,EAAI2wL,EAAcqC,WAAWtiM,QACjCsP,EAAI8J,IAAQ9J,EAAG,UAAW5pC,EAAEg1L,OAC5BprJ,EAAI8J,IAAQ9J,EAAG,UAAW,IAAM5pC,EAAEu7F,OAClC6+H,IAAOh4N,EAAKwnC,EAAG5pC,EAAEH,IAAI,GAAIG,EAAEH,IAAI,GAAI06N,GAErCn4N,EAAIU,SAEN,GAAIy3N,EAAc0B,YACZj8N,EAAEqkO,WAAarkO,EAAEqkO,UAAUvjO,OAAS,EACtC,IAAK,MAAM+1C,KAAM72C,EAAEqkO,UACjBjiO,EAAIY,UAAYi3N,IAAWpjL,EAAG,GAAI0jL,GAClCM,IAAMz4N,EAAKy0C,EAAG,GAAIA,EAAG,GAAI,EAAG0jL,GAIlC,GAAIA,EAAc2B,YAAcl8N,EAAEkjO,cAAsD,OAArCvV,EAAM4M,EAAcsC,mBAAwB,EAASlP,EAAI7sN,QAAU,EACpH,IAAK,MAAOwjO,EAAMztL,KAAOn2C,OAAO+1D,QAAQz2D,EAAEkjO,aAAc,CACtD,IAAIt5L,EAAI2wL,EAAcsC,aAAaviM,QACnCsP,EAAI8J,IAAQ9J,EAAG,UAAW06L,GAC1BlK,IAAOh4N,EAAKwnC,EAAGiN,EAAGA,EAAG/1C,OAAS,GAAG,GAAI+1C,EAAGA,EAAG/1C,OAAS,GAAG,GAAIy5N,GAG/D,GAAIA,EAAc+B,cAAgBt8N,EAAEkjO,YAAa,CAC/C,MAAMsB,EAAeF,IACnB,GAAKA,GAAwB,IAAhBA,EAAKxjO,QAAiBwjO,EAAK,GAExC,IAAK,IAAIzjO,EAAI,EAAGA,EAAIyjO,EAAKxjO,OAAQD,IAAK,CACpCuB,EAAIG,YACJ,MAAMyqC,EAAIs3L,EAAKzjO,GAAG,IAAM,EACxBuB,EAAIS,YAAco3N,IAAWp5N,EAAImsC,EAAGutL,GACpCn4N,EAAI84N,OAAOoJ,EAAKzjO,EAAI,EAAIA,EAAI,EAAI,GAAG,GAAIyjO,EAAKzjO,EAAI,EAAIA,EAAI,EAAI,GAAG,IAC/DuB,EAAIg5N,OAAOkJ,EAAKzjO,GAAG,GAAIyjO,EAAKzjO,GAAG,IAC/BuB,EAAIU,WAGRV,EAAIO,UAAY43N,EAAc53N,UAC9B6hO,EAAYxkO,EAAEkjO,YAAYzxJ,OAC1B+yJ,EAAYxkO,EAAEkjO,YAAYuB,QAC1BD,EAAYxkO,EAAEkjO,YAAYwB,MAC1BF,EAAYxkO,EAAEkjO,YAAYyB,OAC1BH,EAAYxkO,EAAEkjO,YAAY0B,UAMhC,SAASnnO,IAAOymO,EAAWvkO,EAAQwkO,GACjC,IAAIzW,EACJ,MAAM6M,EAAgBzV,GAAU6U,IAAUwK,GAC1C,IAAKxkO,IAAWukO,EACd,OACF,MAAM9hO,EAAMy3N,IAAiBqK,GAC7B,GAAK9hO,EAAL,CAEAA,EAAIgiO,SAAW,QACfhiO,EAAI45N,KAAOzB,EAAcyB,KACzB,IAAK,MAAMh8N,KAAKL,EACd,GAAI46N,EAAc4B,UAAW,CAI3B,GAHA/5N,EAAIS,YAAc03N,EAAcj4N,MAChCF,EAAIY,UAAYu3N,EAAcj4N,MAC9BS,IAAKX,EAAKpC,EAAEH,IAAI,GAAIG,EAAEH,IAAI,GAAIG,EAAEH,IAAI,GAAIG,EAAEH,IAAI,GAAI06N,GAC9CA,EAAc2B,aAAqD,OAArCxO,EAAM6M,EAAcoC,mBAAwB,EAASjP,EAAI5sN,QAAU,EAAG,CACtG,IAAI8oC,EAAI2wL,EAAcoC,aAAariM,QACnCsP,EAAI8J,IAAQ9J,EAAG,UAAW5pC,EAAEg1L,OAC5BprJ,EAAI8J,IAAQ9J,EAAG,UAAW,IAAM5pC,EAAEu7F,OAClC6+H,IAAOh4N,EAAKwnC,EAAG5pC,EAAEH,IAAI,GAAIG,EAAEH,IAAI,GAAI06N,GAErCn4N,EAAIU,WAMV,SAASpF,IAAQwmO,EAAWvkO,EAAQwkO,GAClC,IAAIzW,EACJ,MAAM6M,EAAgBzV,GAAU6U,IAAUwK,GAC1C,GAAKxkO,GAAWukO,GAEZ3J,EAAc8B,eAAwD,OAAtC3O,EAAM6M,EAAcuC,oBAAyB,EAASpP,EAAI5sN,QAAU,EAAG,CACzG,MAAMsB,EAAMy3N,IAAiBqK,GAC7B,IAAK9hO,EACH,OACFA,EAAI45N,KAAOzB,EAAcyB,KACzB55N,EAAIY,UAAYu3N,EAAcj4N,MAC9B,IAAIzB,EAAI,EACR,IAAK,IAAIgkO,EAAM,EAAGA,EAAMllO,EAAOmB,OAAQ+jO,IAAO,CAC5C,MAAO3iM,EAAO4iM,GAAQpkO,OAAO+1D,QAAQ92D,EAAOklO,IAC5C,GAAIC,EAAKhkO,OAAS,GAAKgkO,EAAK,GAAGhkO,OAAS,EAAG,CACzC,MAAMikO,EAAM7iM,EAAM,GAAK,EAAI,IAAIA,EAAM,GAAO,GAC5C,IAAI0H,EAAI2wL,EAAcuC,cAAcxiM,QACpCsP,EAAI8J,IAAQ9J,EAAG,UAAW1H,EAAM,IAChC0H,EAAI8J,IAAQ9J,EAAG,QAASm7L,GACxBn7L,EAAI8J,IAAQ9J,EAAG,SAAUk7L,EAAK,IAC9B1K,IAAOh4N,EAAKwnC,EAAG,EAAG,EAAI/oC,EAAI05N,EAAcE,WAAYF,GACpD15N,GAAK,KAOb,IAAImkO,IAAgB,CAClBhqO,KAAM,sOAUNuC,KAAM,gBACN0nO,SAAU,mBACVxnO,OAAQ,mBACRD,KAAM,mBACN0nO,OAAQ,UACRxnO,QAAS,yBAIPynO,IAAW,EACf,SAASvL,IAAOsK,EAAWvkO,EAAQwkO,GACjC,MAAM5J,EAAgBzV,GAAU6U,IAAUwK,GAC1C,IAAKxkO,IAAWukO,EACd,OACF,MAAM9hO,EAAMy3N,IAAiBqK,GAC7B,GAAK9hO,EAAL,CAEAA,EAAIgiO,SAAW,QACfhiO,EAAI45N,KAAOzB,EAAcyB,KACzB,IAAK,IAAIn7N,EAAI,EAAGA,EAAIlB,EAAOmB,OAAQD,IACjC,GAAI05N,EAAc4B,UAAW,CAI3B,GAHA/5N,EAAIS,YAAc03N,EAAcj4N,MAChCF,EAAIY,UAAYu3N,EAAcj4N,MAC9BS,IAAKX,EAAKzC,EAAOkB,GAAGhB,IAAI,GAAIF,EAAOkB,GAAGhB,IAAI,GAAIF,EAAOkB,GAAGhB,IAAI,GAAIF,EAAOkB,GAAGhB,IAAI,GAAI06N,GAC9EA,EAAc2B,WAAY,CAC5B,MAAMlnC,EAAQ,WAAWn0L,EACrB05N,EAAcG,aAA6C,KAA9BH,EAAcG,cAC7Ct4N,EAAIY,UAAYu3N,EAAcG,YAC9Bt4N,EAAIu4N,SAAS3lC,EAAOr1L,EAAOkB,GAAGhB,IAAI,GAAK,EAAG,EAAIF,EAAOkB,GAAGhB,IAAI,GAAK06N,EAAcE,WAAY96N,EAAOkB,GAAGhB,IAAI,KAE3GuC,EAAIY,UAAYu3N,EAAcK,WAC9Bx4N,EAAIu4N,SAAS3lC,EAAOr1L,EAAOkB,GAAGhB,IAAI,GAAK,EAAG,EAAIF,EAAOkB,GAAGhB,IAAI,GAAK06N,EAAcE,WAAY96N,EAAOkB,GAAGhB,IAAI,IAE3GuC,EAAIU,WAIV,SAAS22N,IAAQ33I,EAAO4nD,GACtB,IAAK5nD,IAAU4nD,EACb,OACF,MAAMtnI,EAAMy3N,IAAiBnwF,GACxBtnI,GAELA,EAAIe,UAAU2+E,EAAO,EAAG,GAE1BnlF,eAAekjB,IAAIqkN,EAAWvkO,EAAQwkO,GACpC,KAAgB,MAAVxkO,OAAiB,EAASA,EAAOk1C,eAAiBqvL,EACtD,OAAO,KACT,MAAMtL,EAAYl4K,KACZ65K,EAAgBzV,GAAU6U,IAAUwK,GACpCiB,EAAUpzL,QAAQnyB,IAAI,CAC1B7kB,IAAKkpO,EAAWvkO,EAAO3E,KAAMu/N,GAC7Bh9N,IAAK2mO,EAAWvkO,EAAOpC,KAAMg9N,GAC7B/8N,IAAK0mO,EAAWvkO,EAAOnC,KAAM+8N,GAC7B98N,IAAOymO,EAAWvkO,EAAOlC,OAAQ88N,GACjC78N,IAAQwmO,EAAWvkO,EAAOjC,QAAS68N,KAMrC,OAFA4K,IAAW78M,GAAI+8M,QAAUF,IAAW/kO,KAAKs3B,MAAMgpB,KAAQk4K,GAAax4N,KAAKs3B,MAAMgpB,KAAQk4K,GACvFj5N,EAAOk1C,YAAY51C,KAAOkmO,IACnBC,EAET,SAAS1L,MACPC,IAAS6C,WAAawI,IAAchqO,KACpC2+N,IAAS8C,WAAauI,IAAcznO,KACpCo8N,IAAS+C,eAAiBsI,IAAcC,SACxCtL,IAASiD,WAAaoI,IAAcxnO,KACpCm8N,IAASkD,aAAemI,IAAcE,OACtCvL,IAASgD,aAAeqI,IAAcvnO,OACtCk8N,IAASmD,cAAgBkI,IAActnO,QAIzC,IAAI4nO,IAA0B,GAC9BpgO,EAASogO,IAAyB,CAChCC,UAAW,IAAMA,IACjBC,IAAK,IAAMA,MAEb,IA6GI7V,IAEA8V,IA/GAD,IAAM,CACR,OAEA,gBAEA,UAEA,iBAEA,iBAEA,WAEA,kBAEA,UAEA,WAEA,YAEA,aAEA,eAEA,gBAEA,YAEA,aAEA,YAEA,aAEA,YAEA,aAEA,YAEA,aAEA,YAEA,aAEA,UAEA,WAEA,WAEA,YAEA,YAEA,aAEA,WAEA,YAEA,WAEA,YAEA,aAEA,UAEA,WAEA,WAEA,YAEA,aAGED,IAAY,CACdG,UAAW,CAAC,eAAgB,iBAC5BC,KAAM,CAAC,WAAY,WACnBtG,MAAO,CAAC,YAAa,cACrBuG,aAAc,CAAC,UAAW,YAC1BC,aAAc,CAAC,WAAY,aAC3BC,SAAU,CAAC,YAAa,WAAY,YACpCC,UAAW,CAAC,eAAgB,WAC5BC,aAAc,CAAC,eAAgB,aAC/BC,aAAc,CAAC,YAAa,aAC5BC,SAAU,CAAC,YAAa,YACxBC,cAAe,CAAC,WAAY,aAC5BC,cAAe,CAAC,WAAY,aAC5BC,cAAe,CAAC,WAAY,aAC5BC,eAAgB,CAAC,gBAAiB,kBAClCC,cAAe,CAAC,WAAY,aAC5BC,cAAe,CAAC,YAAa,cAC7BC,UAAW,CAAC,aAAc,YAAa,aACvCC,WAAY,CAAC,gBAAiB,YAC9BC,cAAe,CAAC,gBAAiB,cACjCC,cAAe,CAAC,aAAc,cAC9BC,UAAW,CAAC,aAAc,aAC1BC,eAAgB,CAAC,YAAa,cAC9BC,eAAgB,CAAC,YAAa,cAC9BC,eAAgB,CAAC,YAAa,cAC9BC,gBAAiB,CAAC,iBAAkB,oBAKlCC,IAAY,IAEZC,IAAY,EACZnpK,IAAU,CAAC,EAAG,GAAI,GAAI,GAAI,IAC9B,SAASopK,MACP,MAAMC,EAAW,GACjB,IAAIC,EAAU,EACd,MAAOA,EAAUH,IAAW,CAC1B,IAAII,EAAc,EACdC,EAAsBF,EAC1B,MAAOE,EAAsBxpK,IAAQl9D,QAAUk9D,IAAQwpK,KAAyBxpK,IAAQspK,GACtFC,GAAe,EACfC,IAEF,MAAM3+G,EAAS7qD,IAAQspK,GACjBG,EAAmBrnO,KAAK+iB,KAAK+jN,IAAYr+G,GACzC6+G,EAAkBtnO,KAAK+iB,KAAK+jN,IAAYr+G,GAC9C,IAAK,IAAI2hG,EAAK,EAAGA,EAAKid,IAAoBjd,EACxC,IAAK,IAAI5qN,EAAI,EAAGA,EAAI8nO,IAAmB9nO,EACrC,IAAK,IAAI+nO,EAAW,EAAGA,EAAWJ,IAAeI,EAC/CN,EAAStmO,KAAK,CAAEnB,GAAIA,EAAI,IAAO8nO,EAAiB5nO,GAAI0qN,EAAK,IAAOid,IAItEH,EAAUE,EAEZ/B,IAAe,CAAE7lO,EAAGg+B,GAAGypM,EAASzmO,IAAK0lC,GAAMA,EAAE1mC,IAAKE,EAAG89B,GAAGypM,EAASzmO,IAAK0lC,GAAMA,EAAExmC,KAEhFnD,eAAeirO,IAAapjB,GAG1B,GAFIl8L,GAAI2vB,UACN03K,IAAQ,OACLA,KAASnL,EAAQjnN,KAAK,aAAeinN,EAAQjnN,KAAK,YAAYmwE,UAAiB,CAClFiiJ,UAAcwG,IAAU3R,EAAQjnN,KAAK,YAAYmwE,WACjD,MAAMhR,GAAmB,MAATizJ,SAAgB,EAASA,IAAM,aAAejvN,OAAOC,OAAOgvN,IAAMkY,eAAe,gBAAa,EAC9GX,IAAYz0K,MAAMC,QAAQgK,GAAUl2B,SAASk2B,EAAO,GAAGorK,YAAY/lJ,IAAI,GAAG/kB,MAAQ,OACzEwnJ,EAAQznN,OAAS4yN,KAC1B/zN,GAAI,gBAAiB+zN,IAAM,aAE7B,OADAyX,MACOzX,IAET,IAmFIoY,IAnFAC,IAAa,CAAC,EAAG,GACrB,SAASC,IAAYC,EAAaC,GAChC,OAAOvpM,GAAG,KACR,MAAM9C,EAAQC,GAAGmsM,EAAa,GAAI,GAClC,IAAIE,EAAU9rM,GAAGR,EAAM,IACnBusM,EAAU/rM,GAAGR,EAAM,IACnBz8B,EAAQi9B,GAAGR,EAAM,IACjBv8B,EAAS+8B,GAAGR,EAAM,IACtBssM,EAAU1oN,GAAGyH,GAAGihN,EAASlB,KAAYiB,EAAOvoO,GAC5CyoO,EAAU3oN,GAAGyH,GAAGkhN,EAASnB,KAAYiB,EAAOroO,GAC5CT,EAAQoyB,GAAGtK,GAAG9nB,EAAO6nO,KAAYc,IAAW,IAC5CzoO,EAASkyB,GAAGtK,GAAG5nB,EAAQ2nO,KAAYc,IAAW,IAC9C,MAAMM,EAAOtrM,GAAGorM,EAASjhN,GAAG9nB,EAAO,IAC7BkpO,EAAOvrM,GAAGqrM,EAASlhN,GAAG5nB,EAAQ,IAC9BipO,EAAO9oN,GAAG4oN,EAAMjpO,GAChBopO,EAAO/oN,GAAG6oN,EAAMhpO,GAChB25F,EAAQ18D,GAAG,CAAC8rM,EAAMC,EAAMC,EAAMC,GAAO,GAC3C,OAAOvvI,IAGXv8F,eAAe+rO,IAAcR,EAAaS,EAAcnkB,EAASokB,GAC/D,IAAIlb,EAAKC,EACT,MAAMkb,EAAgB,GAChBnlM,EAAM,GACZA,EAAIw1D,MAAQ+uI,IAAYC,EAAazC,KACrC/hM,EAAIk3D,OAAS/gE,GAAG8uM,GAChBjlM,EAAIolM,UAAY38M,GAAGw3E,uBAAuBjgE,EAAIw1D,MAAOx1D,EAAIk3D,OAAQ,GAAwC,OAAnC8yH,EAAMlJ,EAAQjnN,KAAK,kBAAuB,EAASmwN,EAAI3G,gBAAkB,IAA0C,OAAnC4G,EAAMnJ,EAAQjnN,KAAK,kBAAuB,EAASowN,EAAInzH,eAAiB,IAC9N,MAAMsuI,QAAYplM,EAAIolM,IAAIlrL,OACpBg9C,QAAel3D,EAAIk3D,OAAOh9C,OAC1Bs7C,QAAcx1D,EAAIw1D,MAAMx2C,QAC9B,IAAK,MAAM7hD,KAAK4xD,MAAMwB,KAAK60K,GAAM,CAC/B,MAAMvtI,EAAQX,EAAO/5F,GACfkoO,EAAS7vI,EAAMr4F,GACfhB,EAAM,CAACO,KAAKs3B,MAAMqxM,EAAO,GAAKH,EAAY,IAAKxoO,KAAKs3B,MAAMqxM,EAAO,GAAKH,EAAY,IAAKxoO,KAAKs3B,MAAMqxM,EAAO,GAAKH,EAAY,IAAKxoO,KAAKs3B,MAAMqxM,EAAO,GAAKH,EAAY,KAClKI,EAAc,CAAEztI,QAAOwtI,SAAQlpO,OACrCgpO,EAAc9nO,KAAKioO,GAGrB,OADAtoO,OAAOo7D,KAAKp4B,GAAKlgC,QAASi6B,GAAW1W,GAAG2c,EAAIjG,KACrCorM,EAETlsO,eAAessO,IAAYnnJ,EAAO0iI,EAASokB,GACzC,MAAMllM,EAAM,GACZA,EAAIwlM,IAAe,MAATvZ,SAAgB,EAASA,IAAM5/F,QAAQjuC,EAAO,CAAC,aACzDp+C,EAAIylM,UAAY5uM,GAAGmJ,EAAIwlM,IAAK,CAAC,EAAG,EAAG,GAAI,CAAC,GAAI,EAAG,IAC/CxlM,EAAI0lM,SAAW7uM,GAAGmJ,EAAIwlM,IAAK,CAAC,EAAG,EAAG,GAAI,CAAC,GAAI,GAAI,IAC/CxlM,EAAIskD,OAAS1rD,GAAGoH,EAAIylM,WACpBzlM,EAAIw1D,MAAQ58D,GAAGoH,EAAI0lM,UACnB,MAAMlwI,QAAcwvI,IAAchlM,EAAIw1D,MAAOx1D,EAAIskD,OAAQw8H,EAASokB,GAElE,OADAloO,OAAOo7D,KAAKp4B,GAAKlgC,QAASi6B,GAAW1W,GAAG2c,EAAIjG,KACrCy7D,EAIT,SAASmwI,IAAKhF,EAAWuE,EAAc,CAAC,EAAG,IACzC,MAAMU,EAAS,CAACjF,EAAUzjO,IAAKi2C,GAAOA,EAAG,IAAKwtL,EAAUzjO,IAAKi2C,GAAOA,EAAG,KACjEx2C,EAAM,CAACD,KAAKC,OAAOipO,EAAO,IAAKlpO,KAAKC,OAAOipO,EAAO,KAClDz5M,EAAM,CAACzvB,KAAKyvB,OAAOy5M,EAAO,IAAKlpO,KAAKyvB,OAAOy5M,EAAO,KAClDzpO,EAAM,CAACQ,EAAI,GAAIA,EAAI,GAAIwvB,EAAI,GAAKxvB,EAAI,GAAIwvB,EAAI,GAAKxvB,EAAI,IACrD0oO,EAAS,CAAClpO,EAAI,GAAK+oO,EAAY,GAAI/oO,EAAI,GAAK+oO,EAAY,GAAI/oO,EAAI,GAAK+oO,EAAY,GAAI/oO,EAAI,GAAK+oO,EAAY,IAChH,MAAO,CAAE/oO,MAAKkpO,UAEhB,SAAS9sM,IAAOooM,EAAWuE,EAAc,CAAC,EAAG,IAC3C,MAAMU,EAAS,CAACjF,EAAUzjO,IAAKi2C,GAAOA,EAAG,IAAKwtL,EAAUzjO,IAAKi2C,GAAOA,EAAG,KACjEx2C,EAAM,CAACD,KAAKC,OAAOipO,EAAO,IAAKlpO,KAAKC,OAAOipO,EAAO,KAClDz5M,EAAM,CAACzvB,KAAKyvB,OAAOy5M,EAAO,IAAKlpO,KAAKyvB,OAAOy5M,EAAO,KAClDpvI,EAAS,EAAE75F,EAAI,GAAKwvB,EAAI,IAAM,GAAIxvB,EAAI,GAAKwvB,EAAI,IAAM,GACrD05M,EAAOnpO,KAAKyvB,IAAIqqE,EAAO,GAAK75F,EAAI,GAAI65F,EAAO,GAAK75F,EAAI,IAAK65F,EAAO,GAAKrqE,EAAI,IAAKqqE,EAAO,GAAKrqE,EAAI,IAC9FhwB,EAAM,CAACO,KAAK43E,MAAMkiB,EAAO,GAAKqvI,GAAOnpO,KAAK43E,MAAMkiB,EAAO,GAAKqvI,GAAOnpO,KAAK43E,MAAM,EAAIuxJ,GAAOnpO,KAAK43E,MAAM,EAAIuxJ,IACxGR,EAAS,CAAClpO,EAAI,GAAK+oO,EAAY,GAAI/oO,EAAI,GAAK+oO,EAAY,GAAI/oO,EAAI,GAAK+oO,EAAY,GAAI/oO,EAAI,GAAK+oO,EAAY,IAChH,MAAO,CAAE/oO,MAAKkpO,UAEhB,SAAS1/J,IAAMxpE,EAAK2pO,GAClB,MAAMD,EAAO,CAAC1pO,EAAI,GAAK2pO,EAAW3pO,EAAI,GAAK2pO,GACrCC,EAAS,CACb5pO,EAAI,IAAM0pO,EAAK,GAAK1pO,EAAI,IAAM,EAC9BA,EAAI,IAAM0pO,EAAK,GAAK1pO,EAAI,IAAM,EAC9B0pO,EAAK,GACLA,EAAK,IAEP,OAAOE,EAKT,IAAIC,IAAa,IACbC,IAAUl4K,OAAOy/C,iBACjBsd,IAAc,CAChB84F,UAAW,CAAC,QAAS,0BAA2B,qBAAsB,WAAY,mBAClFtqN,SAAU,IAER4sO,IAAQ,GACRC,IAAU,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IACvCC,IAAW,EACXlwM,IAAWh6B,GAAM,EAAI,GAAK,EAAIQ,KAAK0oB,IAAIlpB,IACvCmqO,IAAcvlB,GAAYojB,IAAapjB,GAC3C7nN,eAAeqtO,IAASxlB,GAGtB,GAFIl8L,GAAI2vB,UACN8vL,IAAS,MACNA,IAIMvjB,EAAQznN,OACjBnB,GAAI,gBAAiBmsO,IAAO,iBALjB,CACXA,UAAe5R,IAAU3R,EAAQjnN,KAAKmwE,WACtC,MAAMhR,GAAoB,MAAVqrK,SAAiB,EAASA,IAAO,aAAernO,OAAOC,OAAOonO,IAAOF,eAAe,gBAAa,EACjH6B,IAAaj3K,MAAMC,QAAQgK,GAAUl2B,SAASk2B,EAAO,GAAGorK,YAAY/lJ,IAAI,GAAG/kB,MAAQ,EAGrF,OAAO+qK,IAET,SAASkC,IAAanoJ,EAAO4pI,EAAOwe,GAClC,IAAIxc,EAAKC,EACT,MAAMjqL,EAAM,GACZ,KAAsD,OAA/CgqL,EAAe,MAAT5rI,OAAgB,EAASA,EAAM7kB,YAAiB,EAASywJ,EAAI,OAAyD,OAA/CC,EAAe,MAAT7rI,OAAgB,EAASA,EAAM7kB,YAAiB,EAAS0wJ,EAAI,IACrJ,OAAO7rI,EACT,IAAIuqI,EAIJ,GAHI6d,IACFxmM,EAAIymM,QAAUh+M,GAAGs3E,cAAc3hB,EAAO,CAACooJ,GAAU,CAAC,GAAI,CAACpoJ,EAAM7kB,MAAM,GAAI6kB,EAAM7kB,MAAM,MAEjF6kB,EAAM7kB,MAAM,KAAO6kB,EAAM7kB,MAAM,GAAI,CACrC,MAAM19D,EAAS,CACbuiF,EAAM7kB,MAAM,GAAK6kB,EAAM7kB,MAAM,GAAK78D,KAAK43E,OAAO8J,EAAM7kB,MAAM,GAAK6kB,EAAM7kB,MAAM,IAAM,GAAK,EACtF6kB,EAAM7kB,MAAM,GAAK6kB,EAAM7kB,MAAM,GAAK78D,KAAK43E,OAAO8J,EAAM7kB,MAAM,GAAK6kB,EAAM7kB,MAAM,IAAM,GAAK,GAElF59D,EAAQ,CACZyiF,EAAM7kB,MAAM,GAAK6kB,EAAM7kB,MAAM,GAAK78D,KAAK43E,OAAO8J,EAAM7kB,MAAM,GAAK6kB,EAAM7kB,MAAM,IAAM,GAAK,EACtF6kB,EAAM7kB,MAAM,GAAK6kB,EAAM7kB,MAAM,GAAK78D,KAAK43E,OAAO8J,EAAM7kB,MAAM,GAAK6kB,EAAM7kB,MAAM,IAAM,GAAK,GAExF4sK,IAAU,CACR,CAAC,EAAG,GAEJtqO,EAEAF,EAEA,CAAC,EAAG,IAGNqkC,EAAI1Q,IAAMC,GAAGyQ,EAAIymM,SAAWroJ,EAAO+nJ,KACnCnmM,EAAIglF,OAASv8F,GAAGo3E,eAAe7/D,EAAI1Q,IAAK,CAAC04L,EAAOA,IAChDW,EAAQllM,GAAGuc,EAAIglF,OAAQivG,IAAUC,YACxB91I,EAAM7kB,MAAM,KAAOyuJ,GAC5BhoL,EAAIglF,OAASv8F,GAAGo3E,eAAe7/D,EAAIymM,SAAWroJ,EAAO,CAAC4pI,EAAOA,IAC7DW,EAAQllM,GAAGuc,EAAIglF,OAAQivG,IAAUC,QAEjCvL,EAAQllM,GAAGuc,EAAIymM,SAAWroJ,EAAO61I,IAAUC,OAG7C,OADAl3N,OAAOo7D,KAAKp4B,GAAKlgC,QAASi6B,GAAW1W,GAAG2c,EAAIjG,KACrC4uL,EAET,SAAS+d,IAAiB/F,EAAWuE,EAAasB,GAChD,IAAK,MAAMG,KAAQhG,EACjBgG,EAAK58I,SAAW,CACdrtF,KAAK43E,MAAMqyJ,EAAK58I,SAAS,IAAMm7I,EAAY,GAAKiB,IAAQ,GAAG,GAAKA,IAAQ,GAAG,IAAMjB,EAAY,GAAKiB,IAAQ,GAAG,IAC7GzpO,KAAK43E,MAAMqyJ,EAAK58I,SAAS,IAAMm7I,EAAY,GAAKiB,IAAQ,GAAG,GAAKA,IAAQ,GAAG,IAAMjB,EAAY,GAAKiB,IAAQ,GAAG,IAC7GQ,EAAK58I,SAAS,IAEhB48I,EAAKC,YAAc,CAACD,EAAK58I,SAAS,GAAKm7I,EAAY,GAAIyB,EAAK58I,SAAS,GAAKm7I,EAAY,GAAI,EAAIyB,EAAK58I,SAAS,IAAMm7I,EAAY,GAAKA,EAAY,KAEjJ,GAAIsB,EAAS,CACX,MAAM7qO,EAAQ6qO,EAAQ,GAAKA,EAAQ,GAC7B3qO,EAAS2qO,EAAQ,GAAKA,EAAQ,GACpC,IAAK,MAAMG,KAAQhG,EACjBgG,EAAKC,YAAc,CACjBD,EAAKC,YAAY,GAAK/qO,EAAS2qO,EAAQ,GAEvCG,EAAKC,YAAY,GAAKjrO,EAAQ6qO,EAAQ,GAEtCG,EAAKC,YAAY,IAEnBD,EAAK58I,SAAW,CACdrtF,KAAK43E,MAAMqyJ,EAAKC,YAAY,GAAK1B,EAAY,IAC7CxoO,KAAK43E,MAAMqyJ,EAAKC,YAAY,GAAK1B,EAAY,IAC7CyB,EAAKC,YAAY,IAIvB,OAAOjG,EAET,SAASkG,IAAalG,GACpB,MAAMmG,EAAWnG,EAAUrkH,KAAMpxE,GAAiB,aAAXA,EAAE01L,MACnCmG,EAAYpG,EAAUrkH,KAAMpxE,GAAiB,cAAXA,EAAE01L,MACpCoG,EAAYrG,EAAUrkH,KAAMpxE,GAAiB,cAAXA,EAAE01L,MAC1CkG,EAAS/8I,SAAS,KAAOg9I,EAAUh9I,SAAS,IAAM,IAAMi9I,EAAUj9I,SAAS,IAAM,IAAM,EACvF,MAAMk9I,EAAYtG,EAAUrkH,KAAMpxE,GAAiB,cAAXA,EAAE01L,MACpCsG,EAAavG,EAAUrkH,KAAMpxE,GAAiB,eAAXA,EAAE01L,MACrCuG,EAAaxG,EAAUrkH,KAAMpxE,GAAiB,eAAXA,EAAE01L,MAC3CqG,EAAUl9I,SAAS,KAAOm9I,EAAWn9I,SAAS,IAAM,IAAMo9I,EAAWp9I,SAAS,IAAM,IAAM,EAE5F9wF,eAAemuO,IAAgBhpJ,EAAO0iI,EAASokB,GAC7C,KAAgB,MAAVb,SAAiB,EAASA,IAAO,aACrC,OAAO,KACT,MAAMrkM,EAAM,IAEVA,EAAIuiD,GACJviD,EAAI8jL,aACJ9jL,EAAIqnM,QACJrnM,EAAIsnM,MACJtnM,EAAIunM,UAEQ,MAAVlD,SAAiB,EAASA,IAAOh4G,QAAQjuC,EAAO0sC,IAAY84F,WAChE,MAAM4jB,SAAmBxnM,EAAIunM,SAASrtL,QAAQ,GACxC49K,QAAe93L,EAAIuiD,GAAGroC,OACtButL,QAAkBznM,EAAIsnM,MAAMptL,OAClCl9C,OAAOo7D,KAAKp4B,GAAKlgC,QAASi6B,GAAW1W,GAAG2c,EAAIjG,KAC5C,MAAM2tM,EAAoB,GACpB5iJ,EAAQ,EACd,IAAK,IAAI3nF,EAAI,EAAGA,EAAI26N,EAAO16N,OAAS0nF,EAAO3nF,IAAK,CAC9C,MAAM06F,EAAQ3hE,IAAQ4hM,EAAOhzI,EAAQ3nF,EAAI,IACnCwqO,EAAWzxM,IAAQ4hM,EAAOhzI,EAAQ3nF,EAAI,IACtCyqO,EAAWlrO,KAAK43E,MAAM,IAAMujB,EAAQ8vI,EAAWH,GAAa,IAC5DZ,EAAc,CAAC9O,EAAOhzI,EAAQ3nF,EAAI,GAAK6oO,IAAYlO,EAAOhzI,EAAQ3nF,EAAI,GAAK6oO,IAAYlO,EAAOhzI,EAAQ3nF,EAAI,GAAK,GAC/G4sF,EAAW,CAACrtF,KAAK43E,MAAM4wJ,EAAY,GAAK0B,EAAY,IAAKlqO,KAAK43E,MAAM4wJ,EAAY,GAAK0B,EAAY,IAAKA,EAAY,IAClHiB,EAAY,CAACJ,EAAU3iJ,EAAQ3nF,EAAI,GAAIsqO,EAAU3iJ,EAAQ3nF,EAAI,GAAIsqO,EAAU3iJ,EAAQ3nF,EAAI,GAAK,GAClGuqO,EAAkBrqO,KAAK,CAAEujO,KAAMkB,IAAI3kO,GAAIypO,cAAa78I,WAAUg1I,SAAU8I,EAAWhwI,MAAO+vI,IAE5F,GAAIJ,GAAa1mB,EAAQjnN,KAAKwpN,eAAiB,GAC7C,OAAO,KACTwjB,IAAaa,GACb,MAAM/G,EAAY+F,IAAiBgB,EAAmBxC,GAChD4C,EAAOnH,EAAUzjO,IAAKguC,GAAMA,EAAE6+C,UAC9ByL,EAAQmwI,IAAKmC,EAAM,CAAC5C,EAAY,GAAIA,EAAY,KAChD6C,EAAe,GACrB,IAAK,MAAOryO,EAAMwtF,KAAYlmF,OAAO+1D,QAAQ8uK,KAAY,CACvD,MAAM1uL,EAAK,GACX,IAAK,IAAIh2C,EAAI,EAAGA,EAAI+lF,EAAQ9lF,OAAS,EAAGD,IAAK,CAC3C,MAAM6qO,EAAMrH,EAAUrkH,KAAMqqH,GAASA,EAAK/F,OAAS19I,EAAQ/lF,IACrD8qO,EAAMtH,EAAUrkH,KAAMqqH,GAASA,EAAK/F,OAAS19I,EAAQ/lF,EAAI,IAC3D6qO,GAAOC,GACT90L,EAAG91C,KAAK,CAAC2qO,EAAIj+I,SAAUk+I,EAAIl+I,WAE/Bg+I,EAAaryO,GAAQy9C,EAEvB,MAAM+0L,EAAQ,CAAEvwM,GAAI,EAAGkgE,MAAOn7F,KAAK43E,MAAM,IAAMkzJ,GAAa,IAAKrrO,IAAKq5F,EAAMr5F,IAAKkpO,OAAQ7vI,EAAM6vI,OAAQ1E,YAAWnB,YAAauI,GAC/H,OAAOG,EAETjvO,eAAekvO,IAAQ/pJ,EAAO0iI,GAC5B,IAAIkJ,EAAKC,EAAKC,EACd,MAAMgb,EAAc,CAAC9mJ,EAAM7kB,MAAM,IAAM,EAAG6kB,EAAM7kB,MAAM,IAAM,GACtD6pJ,GAAYtC,EAAQjnN,KAAKupN,UAAY,GAAKpmK,KAAQopL,IAClD/a,EAAY4a,KAAWnlB,EAAQjnN,KAAKspN,YAAc,GACxD,GAAIrC,EAAQkB,aAAeoB,GAAYiI,GAAuB,OAAV6a,IAClDD,UACK,CACL,IAAIzwI,EAAQ,GACZ,GAAuE,OAAlEy0H,EAA8B,OAAvBD,EAAMlJ,EAAQjnN,WAAgB,EAASmwN,EAAI,kBAAuB,EAASC,EAAI,WAAY,CACrG,MAAMme,EAAgB7B,IAAanoJ,EAAO,KAC1CoX,QAAc+vI,IAAY6C,EAAetnB,EAASokB,GAClD7hN,GAAG+kN,QAEH5yI,EAAQ,CAAC,CAAEr5F,IAAK,CAAC,EAAG,EAAG,EAAG,GAAIkpO,OAAQ,CAAC,EAAG,EAAG,EAAG,GAAIxtI,MAAO,IAE7D,IAAK,IAAI16F,EAAI,EAAGA,EAAIq4F,EAAMp4F,OAAQD,IAAK,CACrC,MAAMkrO,EAAc9B,IAAanoJ,EAAO,IAAyB,OAAnB8rI,EAAM10H,EAAMr4F,SAAc,EAAS+sN,EAAImb,QACrFa,IAAM9oO,OAAS,EACf,MAAMkrO,QAAmBlB,IAAgBiB,EAAavnB,EAASokB,GAC/D7hN,GAAGglN,GACEC,IAELA,EAAW3wM,GAAKx6B,EAChB+oO,IAAM7oO,KAAKirO,IAEblC,IAAWppL,KACXipL,IAAU,EAEZ,OAAOC,IAIT,IAoFIqC,IApFAC,IAAU,CACZ,CAAEC,MAAO,EAAGn3C,MAAO,UACnB,CAAEm3C,MAAO,EAAGn3C,MAAO,WACnB,CAAEm3C,MAAO,EAAGn3C,MAAO,OACnB,CAAEm3C,MAAO,EAAGn3C,MAAO,cACnB,CAAEm3C,MAAO,EAAGn3C,MAAO,YACnB,CAAEm3C,MAAO,EAAGn3C,MAAO,OACnB,CAAEm3C,MAAO,EAAGn3C,MAAO,SACnB,CAAEm3C,MAAO,EAAGn3C,MAAO,SACnB,CAAEm3C,MAAO,EAAGn3C,MAAO,QACnB,CAAEm3C,MAAO,GAAIn3C,MAAO,iBACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,gBACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,aACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,iBACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,SACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,QACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,OACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,OACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,SACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,SACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,OACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,YACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,QACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,SACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,WACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,YACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,YACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,WACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,OACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,YACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,WACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,QACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,aACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,eACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,QACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,gBACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,kBACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,cACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,aACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,iBACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,UACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,cACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,OACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,QACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,SACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,SACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,QACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,UACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,SACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,YACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,UACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,YACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,UACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,WACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,SACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,SACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,QACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,SACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,SACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,gBACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,OACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,gBACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,UACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,MACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,UACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,SACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,UACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,YACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,cACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,aACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,QACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,WACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,QACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,gBACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,QACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,SACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,QACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,YACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,cACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,cACpB,CAAEm3C,MAAO,GAAIn3C,MAAO,eAKlBo3C,IAAa,EACbC,IAAQ,GACRC,IAAY,EACZC,IAAW96K,OAAOy/C,iBACtBv0G,eAAegC,IAAK6lN,GAGlB,GAFIl8L,GAAI2vB,UACNg0L,IAAS,MACNA,IAIMznB,EAAQznN,OACjBnB,GAAI,gBAAiBqwO,IAAO,iBALjB,CACXA,UAAe9V,IAAU3R,EAAQ/mN,OAAOiwE,WACxC,MAAMhR,GAAoB,MAAVuvK,SAAiB,EAASA,IAAO,aAAevrO,OAAOC,OAAOsrO,IAAOpE,eAAe,gBAAa,EACjHuE,IAAa35K,MAAMC,QAAQgK,GAAUl2B,SAASk2B,EAAO,GAAGorK,YAAY/lJ,IAAI,GAAG/kB,MAAQ,EAGrF,OAAOivK,IAETtvO,eAAe6vO,IAAStD,EAAK/yI,EAAaquH,GACxC,IAAK0kB,EACH,MAAO,GACT,MAAMxlM,EAAM,GACN+oM,EAAU,GACV1qO,QAAmBmnO,EAAIxmL,QAC7Bhf,EAAIrH,QAAUC,GAAG4sM,GACjB,MAAM1a,EAAMzyL,GAAG2H,EAAIrH,QAAS,EAAG,GAC/BqH,EAAInH,MAAQC,GAAG,CAACgyL,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAAK,GACjD9qL,EAAIw1D,MAAQ58D,GAAGoH,EAAInH,OACnBmH,EAAIk3D,OAASt+D,GAAGkyL,EAAI,IACpB9qL,EAAIgpM,QAAUpwM,GAAGkyL,EAAI,IACrBznM,GAAG,CAACmiN,KAAQ1a,IACZ9qL,EAAIolM,UAAY38M,GAAGw3E,uBAAuBjgE,EAAIw1D,MAAOx1D,EAAIk3D,OAAQ4pH,EAAQ/mN,OAAOmpN,aAAe,EAAGpC,EAAQ/mN,OAAO+8F,aAAcgqH,EAAQ/mN,OAAOspN,eAAiB,GAC/J,MAAM+hB,QAAYplM,EAAIolM,IAAIlrL,OAC1B,IAAI/8C,EAAI,EACR,IAAK,MAAM8rO,KAAOl6K,MAAMwB,KAAK60K,GAAM,CACjC,MAAMvtI,EAAQn7F,KAAK43E,MAAM,IAAMj2E,EAAW,GAAG4qO,GAAK,IAAM,IAClDC,EAAW7qO,EAAW,GAAG4qO,GAAK,GACpC,GAAIl7K,OAAO3kC,MAAM8/M,GACf,SACF,MAAM53C,EAAQk3C,IAAQU,GAAU53C,OACzBp1L,EAAG4qN,GAAM,CACdzoN,EAAW,GAAG4qO,GAAK,GAAKP,IACxBrqO,EAAW,GAAG4qO,GAAK,GAAKP,KAEpBrD,EAAS,CACbnpO,EACA4qN,EACAzoN,EAAW,GAAG4qO,GAAK,GAAKP,IAAaxsO,EACrCmC,EAAW,GAAG4qO,GAAK,GAAKP,IAAa5hB,GAEjC3qN,EAAM,CACVO,KAAK43E,MAAM+wJ,EAAO,GAAK5yI,EAAY,IACnC/1F,KAAK43E,MAAM+wJ,EAAO,GAAK5yI,EAAY,IACnC/1F,KAAK43E,MAAM+wJ,EAAO,GAAK5yI,EAAY,IACnC/1F,KAAK43E,MAAM+wJ,EAAO,GAAK5yI,EAAY,KAErCs2I,EAAQ1rO,KAAK,CAAEs6B,GAAIx6B,IAAK06F,QAAO4wI,MAAOS,EAAU53C,QAAOn1L,MAAKkpO,WAG9D,OADAroO,OAAOo7D,KAAKp4B,GAAKlgC,QAASi6B,GAAW1W,GAAG2c,EAAIjG,KACrCgvM,EAET9vO,eAAekwO,IAAS/qJ,EAAO0iI,GAC7B,KAAgB,MAAVynB,SAAiB,EAASA,IAAO,aACrC,MAAO,GACT,MAAMnlB,GAAYtC,EAAQ/mN,OAAOqpN,UAAY,GAAKpmK,KAAQ4rL,IACpDvd,EAAYwd,KAAY/nB,EAAQ/mN,OAAOopN,YAAc,GAC3D,OAAIrC,EAAQkB,aAAeoB,GAAYiI,GAAasd,IAAMvrO,OAAS,GACjEyrO,MACOF,MAETE,IAAW,EACJ,IAAIv6L,QAAQr1C,MAAOw9C,IACxB,MAAMyuL,EAAc,CAAC9mJ,EAAM7kB,MAAM,IAAM,EAAG6kB,EAAM7kB,MAAM,IAAM,GACtDyrD,EAASv8F,GAAGo3E,eAAezhB,EAAO,CAACsqJ,IAAYA,MAC/CU,EAAUtoB,EAAQ/mN,OAAOZ,QAAoB,MAAVovO,SAAiB,EAASA,IAAOl8G,QAAQrH,EAAQ,CAAC,uBAAyB,KACpH4jH,IAAY5rL,KACZ35B,GAAG2hG,GACH,MAAM7jH,QAAY2nO,IAASM,EAASlE,EAAapkB,GACjD6nB,IAAQxnO,EACRs1C,EAAQt1C,MAKZ,IAAIkoO,IAA8B,GAClC7nO,EAAS6nO,IAA6B,CACpCxH,UAAW,IAAMyH,IACjBxH,IAAK,IAAMyH,MAEb,IA4BIC,IA5BAD,IAAO,CACT,OACA,OACA,gBACA,aACA,aACA,QACA,eACA,YACA,YACA,aACA,WACA,YACA,aACA,UACA,WACA,aAEED,IAAa,CACfG,QAAS,CAAC,UAAW,WAAY,aACjCC,SAAU,CAAC,WAAY,YAAa,cACpCC,MAAO,CAAC,eAAgB,gBAAiB,WAAY,UAAW,gBAChEC,QAAS,CAAC,eAAgB,YAAa,aACvCC,SAAU,CAAC,gBAAiB,aAAc,cAC1CC,KAAM,IAKJC,IAAY,EACZC,IAAS,CAAEryM,GAAI,EAAGgpM,UAAW,GAAIxkO,IAAK,CAAC,EAAG,EAAG,EAAG,GAAIkpO,OAAQ,CAAC,EAAG,EAAG,EAAG,GAAIxtI,MAAO,EAAG2nI,YAAa,IACjGyK,IAAWl8K,OAAOy/C,iBACtBv0G,eAAeixO,IAAMppB,GAOnB,OANIl8L,GAAI2vB,UACNi1L,IAAS,MACNA,IAEI1oB,EAAQznN,OACfnB,GAAI,gBAAiBsxO,IAAO,aAF5BA,UAAe/W,IAAU3R,EAAQjnN,KAAKmwE,WAGjCw/J,IAETvwO,eAAekxO,IAAMnxK,EAAQoxK,GAC3B,MAAOzuO,EAAOE,GAAUm9D,EAAOO,MACzB8wK,EAAWl3M,GAAE6lC,EAAQ,CAACn9D,EAASF,IAC/BwwB,EAAMC,GAAGi+M,EAAU,GACnBC,SAAkBn+M,EAAI+tB,QAAQ,GACpC,GAAIowL,EAAWF,EAAU,CACvB,MAAMG,EAAc/tN,GAAG6tN,EAAU,GAC3B78M,EAAMC,GAAG88M,EAAa5uO,GACtBO,SAAWsxB,EAAI0sB,QAAQ,GACvB12B,EAAMC,GAAG8mN,EAAa5uO,GACtBmrN,SAAYtjM,EAAI02B,QAAQ,GAE9B,OADA72B,GAAG,CAACgnN,EAAUl+M,EAAKo+M,EAAa/8M,EAAKhK,IAC9B,CAACtnB,EAAG4qN,EAAIwjB,GAGjB,OADAjnN,GAAG,CAACgnN,EAAUl+M,IACP,CAAC,EAAG,EAAGm+M,GAEhBrxO,eAAeuxO,IAAS1zO,EAAOgqN,GAC7B,KAAgB,MAAV0oB,SAAiB,EAASA,IAAO,gBAA4B,MAAVA,SAAiB,EAASA,IAAOxwK,OAAO,GAAGO,OAClG,MAAO,GACT,MAAM6pJ,GAAYtC,EAAQjnN,KAAKupN,UAAY,GAAKpmK,KAAQ+sL,IAClD1e,EAAY4e,KAAYnpB,EAAQjnN,KAAKspN,YAAc,GACzD,OAAIrC,EAAQkB,aAAeoB,GAAYiI,GAAaruN,OAAOo7D,KAAK4xK,IAAOrJ,WAAWvjO,OAAS,GACzF6sO,MACO,CAACD,OAEVC,IAAW,EACJ,IAAI37L,QAAQr1C,MAAOw9C,IACxB,MAAM1c,EAASmB,GAAG,KAChB,IAAI8uL,EAAKC,EACT,MAAMjlG,EAASv8F,GAAGo3E,eAAe/oG,EAAO,EAA8D,OAA3DkzN,EAAgB,MAAVwf,SAAiB,EAASA,IAAOxwK,OAAO,GAAGO,YAAiB,EAASywJ,EAAI,KAAO,GAAgE,OAA3DC,EAAgB,MAAVuf,SAAiB,EAASA,IAAOxwK,OAAO,GAAGO,YAAiB,EAAS0wJ,EAAI,KAAO,IAAI,GAC1NwgB,EAAW18M,GAAGi3F,EAAQivG,IAAUG,KAChC5lM,EAAO8K,GAAGmxM,EAAUxW,IAAUE,KACpC,OAAO3lM,IAET,IAAIk8M,EAKJ,GAJI5pB,EAAQjnN,KAAKV,UACfuxO,EAAiB,MAAVlB,SAAiB,EAASA,IAAOn9G,QAAQtyF,IAClDgwM,IAAY/sL,KACZ35B,GAAG0W,GACC2wM,EAAM,CACRV,IAAOrJ,UAAUvjO,OAAS,EAC1B,MAAMu7B,EAAUC,GAAG8xM,GACnBrnN,GAAGqnN,GACH,MAAM7xM,EAAQ2D,GAAG7D,EAAS,GAC1BtV,GAAGsV,GACH,IAAK,IAAIswM,EAAM,EAAGA,EAAMpwM,EAAMz7B,OAAQ6rO,IAAO,CAC3C,MAAO0B,EAAIC,EAAKC,SAAmBV,IAAMtxM,EAAMowM,GAAMnoB,EAAQjnN,KAAKwpN,eAC9DwnB,GAAa/pB,EAAQjnN,KAAKwpN,eAAiB,IAC7C2mB,IAAOrJ,UAAUtjO,KAAK,CACpBw6F,MAAOn7F,KAAKs3B,MAAM,IAAM62M,GAAa,IACrCjK,KAAM2I,IAAKN,GACXrC,YAAa,CAGX+D,EAAKnB,IAAOxwK,OAAO,GAAGO,MAAM,GAC5BqxK,EAAMpB,IAAOxwK,OAAO,GAAGO,MAAM,IAE/BwwB,SAAU,CAGRrtF,KAAKs3B,MAAMl9B,EAAMyiE,MAAM,GAAKoxK,EAAKnB,IAAOxwK,OAAO,GAAGO,MAAM,IACxD78D,KAAKs3B,MAAMl9B,EAAMyiE,MAAM,GAAKqxK,EAAMpB,IAAOxwK,OAAO,GAAGO,MAAM,OAKjE1gC,EAAM/4B,QAAS6iC,GAAMtf,GAAGsf,IAE1BqnM,IAAOnyI,MAAQmyI,IAAOrJ,UAAUvwK,OAAO,CAACmxJ,EAAMupB,IAASA,EAAKjzI,MAAQ0pH,EAAOupB,EAAKjzI,MAAQ0pH,EAAM,GAC9F,MAAMrlN,EAAI8tO,IAAOrJ,UAAUzjO,IAAK0lC,GAAMA,EAAEmnD,SAAS,IAC3C+8H,EAAKkjB,IAAOrJ,UAAUzjO,IAAK0lC,GAAMA,EAAEmnD,SAAS,IAClDigJ,IAAO7tO,IAAM,CACXO,KAAKC,OAAOT,GACZQ,KAAKC,OAAOmqN,GACZpqN,KAAKyvB,OAAOjwB,GAAKQ,KAAKC,OAAOT,GAC7BQ,KAAKyvB,OAAO26L,GAAMpqN,KAAKC,OAAOmqN,IAEhC,MAAMikB,EAAOf,IAAOrJ,UAAUzjO,IAAK0lC,GAAMA,EAAEgkM,YAAY,IACjDoE,EAAOhB,IAAOrJ,UAAUzjO,IAAK0lC,GAAMA,EAAEgkM,YAAY,IACvDoD,IAAO3E,OAAS,CACd3oO,KAAKC,OAAOouO,GACZruO,KAAKC,OAAOquO,GACZtuO,KAAKyvB,OAAO4+M,GAAQruO,KAAKC,OAAOouO,GAChCruO,KAAKyvB,OAAO6+M,GAAQtuO,KAAKC,OAAOquO,IAElC,IAAK,MAAOt1O,EAAMwtF,KAAYlmF,OAAO+1D,QAAQu2K,KAAa,CACxD,MAAMn2L,EAAK,GACX,IAAK,IAAIh2C,EAAI,EAAGA,EAAI+lF,EAAQ9lF,OAAS,EAAGD,IAAK,CAC3C,MAAM6qO,EAAMgC,IAAOrJ,UAAUrkH,KAAMqqH,GAASA,EAAK/F,OAAS19I,EAAQ/lF,IAC5D8qO,EAAM+B,IAAOrJ,UAAUrkH,KAAMqqH,GAASA,EAAK/F,OAAS19I,EAAQ/lF,EAAI,IAClE6qO,GAAOC,GAAOD,EAAInwI,OAASipH,EAAQjnN,KAAKwpN,eAAiB,IAAM4kB,EAAIpwI,OAASipH,EAAQjnN,KAAKwpN,eAAiB,IAC5GlwK,EAAG91C,KAAK,CAAC2qO,EAAIj+I,SAAUk+I,EAAIl+I,WAE/BigJ,IAAOxK,YAAY9pO,GAAQy9C,EAE7BsD,EAAQ,CAACuzL,SAKb,IAAIiB,IAAc9uO,GAAQ,CAACO,KAAKgf,IAAIvf,EAAI+uO,SAAS,GAAK/uO,EAAIgvO,WAAW,IAAKzuO,KAAKgf,IAAIvf,EAAI+uO,SAAS,GAAK/uO,EAAIgvO,WAAW,KAChHC,IAAgBjvO,GAAQ,CAACA,EAAIgvO,WAAW,IAAMhvO,EAAI+uO,SAAS,GAAK/uO,EAAIgvO,WAAW,IAAM,EAAGhvO,EAAIgvO,WAAW,IAAMhvO,EAAI+uO,SAAS,GAAK/uO,EAAIgvO,WAAW,IAAM,EAAG,GACvJE,IAAW,CAAClvO,EAAKiiF,IAAUjiF,EAAM,CACnCO,KAAK43E,MAAM53E,KAAKyvB,IAAI,EAAGhwB,EAAIgvO,WAAW,KACtCzuO,KAAK43E,MAAM53E,KAAKyvB,IAAI,EAAGhwB,EAAIgvO,WAAW,KACtCzuO,KAAK43E,MAAM53E,KAAKC,IAAIyhF,EAAM7kB,MAAM,IAAM,EAAGp9D,EAAI+uO,SAAS,IAAMxuO,KAAKyvB,IAAI,EAAGhwB,EAAIgvO,WAAW,KACvFzuO,KAAK43E,MAAM53E,KAAKC,IAAIyhF,EAAM7kB,MAAM,IAAM,EAAGp9D,EAAI+uO,SAAS,IAAMxuO,KAAKyvB,IAAI,EAAGhwB,EAAIgvO,WAAW,MACrF,CAAC,EAAG,EAAG,EAAG,GACVG,IAAY,CAACnvO,EAAKiiF,IAAUjiF,EAAM,CACpCA,EAAIgvO,WAAW,IAAM/sJ,EAAM7kB,MAAM,IAAM,GACvCp9D,EAAIgvO,WAAW,IAAM/sJ,EAAM7kB,MAAM,IAAM,IACtCp9D,EAAI+uO,SAAS,GAAK/uO,EAAIgvO,WAAW,KAAO/sJ,EAAM7kB,MAAM,IAAM,IAC1Dp9D,EAAI+uO,SAAS,GAAK/uO,EAAIgvO,WAAW,KAAO/sJ,EAAM7kB,MAAM,IAAM,IACzD,CAAC,EAAG,EAAG,EAAG,GACVgyK,IAAsB,CAACpvO,EAAKusN,EAAQ+b,KACtC,MAAM0G,EAAa,CAAChvO,EAAIgvO,WAAW,GAAKziB,EAAO,GAAIvsN,EAAIgvO,WAAW,GAAKziB,EAAO,IACxEwiB,EAAW,CAAC/uO,EAAI+uO,SAAS,GAAKxiB,EAAO,GAAIvsN,EAAI+uO,SAAS,GAAKxiB,EAAO,IAClE9E,EAAYznN,EAAIynN,UAAU1mN,IAAKi2C,GAAO,EAAEA,EAAG,GAAKsxL,EAAO,IAAM/b,EAAO,IAAKv1K,EAAG,GAAKsxL,EAAO,IAAM/b,EAAO,KAC3G,MAAO,CAAEyiB,aAAYD,WAAUtnB,YAAW4nB,WAAYrvO,EAAIqvO,aAExDC,IAAe,CAACtvO,EAAKrF,EAAO8+F,KAC9B,MAAMt5F,EAAIxF,EAAMyiE,MAAM,GAChBl9D,EAAIvF,EAAMyiE,MAAM,GAChBmyK,EAAS,CAACvvO,EAAIgvO,WAAW,GAAK7uO,EAAGH,EAAIgvO,WAAW,GAAK9uO,EAAGF,EAAI+uO,SAAS,GAAK5uO,EAAGH,EAAI+uO,SAAS,GAAK7uO,GAC/FmxN,EAAO/kM,GAAGs3E,cAAcjpG,EAAO,CAAC40O,GAAS,CAAC,GAAI91I,GAC9CpnE,EAAO/K,GAAG+pM,EAAMyG,IAAUC,OAEhC,OADA7wM,GAAGmqM,GACIh/L,GAELm9M,IAAa,CAACxvO,EAAKusN,KACrB,MAAMlyH,EAAS40I,IAAajvO,GACtB6rN,EAAQijB,IAAW9uO,GACnByvO,EAAW,CAACljB,EAASV,EAAM,GAAK,EAAGU,EAASV,EAAM,GAAK,GAC7D,MAAO,CACLmjB,WAAY,CAAC30I,EAAO,GAAKo1I,EAAS,GAAIp1I,EAAO,GAAKo1I,EAAS,IAC3DV,SAAU,CAAC10I,EAAO,GAAKo1I,EAAS,GAAIp1I,EAAO,GAAKo1I,EAAS,IACzDhoB,UAAWznN,EAAIynN,UACf4nB,WAAYrvO,EAAIqvO,WAChBlyK,KAAM0uJ,IAGN6jB,IAAe1vO,IACjB,MAAM2vO,EAAUV,IAAajvO,GACvB6rN,EAAQijB,IAAW9uO,GACnByvO,EAAWlvO,KAAKyvB,OAAO67L,GAAS,EACtC,MAAO,CACLmjB,WAAY,CAACzuO,KAAKs3B,MAAM83M,EAAQ,GAAKF,GAAWlvO,KAAKs3B,MAAM83M,EAAQ,GAAKF,IACxEV,SAAU,CAACxuO,KAAKs3B,MAAM83M,EAAQ,GAAKF,GAAWlvO,KAAKs3B,MAAM83M,EAAQ,GAAKF,IACtEhoB,UAAWznN,EAAIynN,UACf4nB,WAAYrvO,EAAIqvO,WAChBlyK,KAAM,CAAC58D,KAAKs3B,MAAMg0L,EAAM,IAAKtrN,KAAKs3B,MAAMg0L,EAAM,OAG9C+jB,IAAiCnoB,IACnC,MAAM1nN,EAAI0nN,EAAU1mN,IAAKkpC,GAAMA,EAAE,IAC3B0gL,EAAKlD,EAAU1mN,IAAKkpC,GAAMA,EAAE,IAClC,MAAO,CACL+kM,WAAY,CAACzuO,KAAKC,OAAOT,GAAIQ,KAAKC,OAAOmqN,IACzCokB,SAAU,CAACxuO,KAAKyvB,OAAOjwB,GAAIQ,KAAKyvB,OAAO26L,IACvClD,cAGAooB,IAAsB,CAAC,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,IACpDC,IAAoB5T,GAAUA,EAAQ,EAAI37N,KAAKsC,GAAKtC,KAAKypB,OAAOkyM,EAAQ37N,KAAKsC,KAAO,EAAItC,KAAKsC,KAC7FktO,IAAkB,CAACC,EAAQC,IAAWH,IAAiBvvO,KAAKsC,GAAK,EAAItC,KAAKugB,QAAQmvN,EAAO,GAAKD,EAAO,IAAKC,EAAO,GAAKD,EAAO,KAC7HE,IAAyB,CAACnwO,EAAG4qN,IAAO,CAAC,CAAC,EAAG,EAAG5qN,GAAI,CAAC,EAAG,EAAG4qN,GAAK,CAAC,EAAG,EAAG,IACnEljM,IAAM,CAAC0oN,EAAKC,KACd,IAAI9oK,EAAU,EACd,IAAK,IAAItmE,EAAI,EAAGA,EAAImvO,EAAIlvO,OAAQD,IAC9BsmE,GAAW6oK,EAAInvO,GAAKovO,EAAIpvO,GAC1B,OAAOsmE,GAEL+oK,IAAqB,CAAC1hB,EAAK2hB,KAC7B,MAAMC,EAAS,GACf,IAAK,IAAIvvO,EAAI,EAAGA,EAAI2tN,EAAI1tN,OAAQD,IAC9BuvO,EAAOrvO,KAAKytN,EAAI3tN,GAAGsvO,IACrB,OAAOC,GAELC,IAA4B,CAACC,EAAMC,KACrC,MAAMppK,EAAU,GACVukJ,EAAQ4kB,EAAKxvO,OACnB,IAAK,IAAI0vO,EAAM,EAAGA,EAAM9kB,EAAO8kB,IAAO,CACpCrpK,EAAQpmE,KAAK,IACb,IAAK,IAAI0vO,EAAM,EAAGA,EAAM/kB,EAAO+kB,IAC7BtpK,EAAQqpK,GAAKzvO,KAAKumB,IAAIgpN,EAAKE,GAAMN,IAAmBK,EAAME,KAE9D,OAAOtpK,GAELupK,IAAsB,CAACzzO,EAAUi9F,KACnC,MAAMy2I,EAAOvwO,KAAK6kB,IAAIhoB,GAChB2zO,EAAOxwO,KAAK85B,IAAIj9B,GAChB4zO,EAAiB,CAAC,CAACF,GAAOC,EAAM,GAAI,CAACA,EAAMD,EAAM,GAAI,CAAC,EAAG,EAAG,IAC5DG,EAAoBf,IAAuB71I,EAAO,GAAIA,EAAO,IAC7D62I,EAA2BV,IAA0BS,EAAmBD,GACxEG,EAA4BjB,KAAwB71I,EAAO,IAAKA,EAAO,IAC7E,OAAOm2I,IAA0BU,EAA0BC,IAEzDC,IAAyB3mB,IAC3B,MAAM4mB,EAAoB,CAAC,CAAC5mB,EAAO,GAAG,GAAIA,EAAO,GAAG,IAAK,CAACA,EAAO,GAAG,GAAIA,EAAO,GAAG,KAC5E6mB,EAAuB,CAAC7mB,EAAO,GAAG,GAAIA,EAAO,GAAG,IAChD8mB,EAAsB,EAAE9pN,IAAI4pN,EAAkB,GAAIC,IAAwB7pN,IAAI4pN,EAAkB,GAAIC,IAC1G,MAAO,CAACD,EAAkB,GAAGvtN,OAAOytN,EAAoB,IAAKF,EAAkB,GAAGvtN,OAAOytN,EAAoB,IAAK,CAAC,EAAG,EAAG,KAEvHC,IAAc,CAACC,EAAuBT,IAAmB,CAACvpN,IAAIgqN,EAAuBT,EAAe,IAAKvpN,IAAIgqN,EAAuBT,EAAe,KACvJ,SAASU,IAAgBC,GACvB,MAAMC,EAAuB,MAAhBD,EAAsB,CAAExzK,QAAS,CAAC,GAAI0zK,QAAS,CAAC,IAAO,CAAE1zK,QAAS,CAACwzK,EAAc,GAAIA,EAAc,GAAIE,QAAS,CAAC,EAAG,IAC3HrK,EAAW,GACjB,IAAK,IAAIxmO,EAAI,EAAGA,EAAI4wO,EAAKzzK,QAAQl9D,OAAQD,IAAK,CAC5C,MAAMgoH,EAAS4oH,EAAKzzK,QAAQn9D,GACtB8wO,EAAWvxO,KAAKypB,OAAO2nN,EAAc3oH,EAAS,GAAKA,GACnD+oH,EAAWxxO,KAAKypB,OAAO2nN,EAAc3oH,EAAS,GAAKA,GACnDgpH,EAAaJ,EAAKC,QAAQ7wO,GAChC,IAAK,IAAIixO,EAAQ,EAAGA,EAAQH,EAAUG,IAAS,CAC7C,MAAMC,EAAUlpH,GAAUipH,EAAQ,IAClC,IAAK,IAAIE,EAAQ,EAAGA,EAAQJ,EAAUI,IAAS,CAC7C,MAAMC,EAAUppH,GAAUmpH,EAAQ,IAClC,IAAK,IAAInuM,EAAI,EAAGA,EAAIguM,EAAYhuM,IAC9BwjM,EAAStmO,KAAK,CAACkxO,EAASF,MAIhC,OAAO1K,EAET,SAAS6K,IAAmBC,EAAWtyO,EAAKk8N,EAAO8U,EAAgBW,GACjE,MAAMY,EAAUzD,IAAW9uO,GACrBwyO,EAAeF,EAAUvxO,IAAK0xO,GAAU,CAE5CF,EAAQ,GAAKZ,GAAec,EAAM,GAAKd,EAAc,GACrDY,EAAQ,GAAKZ,GAAec,EAAM,GAAKd,EAAc,GACrDc,EAAM,IAAM,IAERC,EAAaxW,GAAmB,IAAVA,GAAe37N,KAAKgf,IAAI28M,GAAS,GACvDyW,EAAuBD,EAAa7B,IAAoB3U,EAAO,CAAC,EAAG,IAAM2T,IACzE+C,EAAgBF,EAAaF,EAAazxO,IAAK0xO,GAAU,IAAIjB,IAAYiB,EAAOE,GAAuBF,EAAM,KAAOD,EACpHK,EAAwBH,EAAatB,IAAsBJ,GAAkBnB,IAC7EiD,EAAY7D,IAAajvO,GACzB+yO,EAAU,CAACtrN,IAAIqrN,EAAWD,EAAsB,IAAKprN,IAAIqrN,EAAWD,EAAsB,KAChG,OAAOD,EAAc7xO,IAAK0xO,GAAU,CAClClyO,KAAK43E,MAAMs6J,EAAM,GAAKM,EAAQ,IAC9BxyO,KAAK43E,MAAMs6J,EAAM,GAAKM,EAAQ,IAC9BxyO,KAAK43E,MAAMs6J,EAAM,IAAM,KAG3B,SAASO,IAAoBC,EAAQjzO,EAAKiiF,EAAO0vJ,GAC/C,MAAMlS,EAAez/N,EAAIynN,UAAUxmN,QAAUs+N,IAAcrlC,MAAQqlC,IAAcE,aAAeC,IAAmBD,aACnH,IAEIyT,EAFAhX,EAAQ,EACR8U,EAAiBnB,IAErB,GAAIoD,GAAUxqN,GAAIi6C,QAAQ1gE,SAAS,oBAAqB,CACtDk6N,EAAQ6T,IAAgB/vO,EAAIynN,UAAUgY,EAAa,IAAKz/N,EAAIynN,UAAUgY,EAAa,KACnF,MAAMiT,EAAaxW,GAAmB,IAAVA,GAAe37N,KAAKgf,IAAI28M,GAAS,GAC7D,GAAIwW,EAAY,CACd,MAAMr4I,EAAS40I,IAAajvO,GACtBmzO,EAAY,CAAC94I,EAAO,GAAKpY,EAAM7kB,MAAM,GAAIi9B,EAAO,GAAKpY,EAAM7kB,MAAM,IACjEg2K,EAAU9mN,GAAGq3E,iBAAiB1hB,EAAOi6I,EAAO,EAAG,CAACiX,EAAU,GAAIA,EAAU,KAC9EnC,EAAiBH,KAAqB3U,EAAO7hI,GAC7C64I,EAAQ5D,IAAatvO,EAAKozO,EAAS,CAACzB,EAAaA,IACjDzqN,GAAGksN,QAEHF,EAAQ5D,IAAatvO,EAAKiiF,EAAO,CAAC0vJ,EAAaA,SAGjDuB,EAAQ5D,IAAatvO,EAAKiiF,EAAO,CAAC0vJ,EAAaA,IAEjD,MAAO,CAACzV,EAAO8U,EAAgBkC,GAEjC,IAkBIG,IA+FAC,IAjHAC,IAAkBnsB,IACpB,MAAMrnN,EAAIqnN,EAAKrmN,IAAKipC,GAAMA,EAAE,IACtB2gL,EAAKvD,EAAKrmN,IAAKipC,GAAMA,EAAE,IAC7B,MAAO,CAACzpC,KAAKC,OAAOT,IAAMQ,KAAKyvB,OAAOjwB,GAAKQ,KAAKC,OAAOT,IAAM,EAAGQ,KAAKC,OAAOmqN,IAAOpqN,KAAKyvB,OAAO26L,GAAMpqN,KAAKC,OAAOmqN,IAAO,IAEtH6oB,IAAmB,CAACpsB,EAAMqsB,KAC5B,MAAMp5I,EAASk5I,IAAensB,GACxBmrB,EAAUzD,IAAW2E,GACrBC,EAAgB,CACpB1E,WAAY,CAAC30I,EAAO,GAAKk4I,EAAQ,GAAK,EAAGl4I,EAAO,GAAKk4I,EAAQ,GAAK,GAClExD,SAAU,CAAC10I,EAAO,GAAKk4I,EAAQ,GAAK,EAAGl4I,EAAO,GAAKk4I,EAAQ,GAAK,IAElE,OAAOmB,GAILC,IAAiB,EACjBC,IAAqB,IAErB/B,IAAU,KACVgC,IAAa,EACbC,IAAa,KACb32K,IAAO,IAAM02K,IACjB/2O,eAAei3O,IAAMpvB,GACnB,IAAIkJ,EAUJ,OATIplM,GAAI2vB,UACNi7L,IAAS,MACNA,IAEI1uB,EAAQznN,OACfnB,GAAI,gBAAiBs3O,IAAO,aAF5BA,UAAe/c,IAA2C,OAAhCzI,EAAMlJ,EAAQxpN,KAAKgC,eAAoB,EAAS0wN,EAAIhgJ,WAGhFgmK,IAAaR,IAAO,aAAeA,IAAOx2K,OAAO,GAAGO,MAAQi2K,IAAOx2K,OAAO,GAAGO,MAAM,GAAK,IACxF02K,IAAa57M,GAAG27M,IAAY,SAC5BhC,IAAU5zM,GAAGyzM,IAAgBmC,MACtBR,IAET,SAASW,IAAaC,GACpB,IAAKpC,MAAYiC,IACf,OAAOpxM,GAAG,CAAC,EAAG,IAChB,MAAMmB,EAAM,GACZA,EAAIqwM,UAAYx5M,GAAGu5M,EAAY,CAAC,EAAG,GAAI,EAAE,EAAG,IAC5CpwM,EAAI8rM,QAAU9vN,GAAGgkB,EAAIqwM,UAAWrC,KAChChuM,EAAIswM,SAAWz5M,GAAGu5M,EAAY,CAAC,EAAG,GAAI,EAAE,EAAG,IAC3CpwM,EAAIuwM,mBAAqB9sN,GAAGuc,EAAIswM,SAAUL,KAC1CjwM,EAAIwwM,kBAAoB/sN,GAAGuc,EAAI8rM,QAASmE,KACxCjwM,EAAIywM,YAAchtN,GAAGuc,EAAIuwM,mBAAoBtc,IAAUG,KACvDp0L,EAAIknD,OAAS5tD,GAAG0G,EAAIwwM,kBAAmBxwM,EAAIywM,aAC3CzwM,EAAI0wM,KAAO10N,GAAGgkB,EAAIwwM,kBAAmBxwM,EAAIywM,aACzCzwM,EAAI2wM,gBAAkB5iN,GAAGiS,EAAIknD,OAAQ+oJ,KACrCjwM,EAAI4wM,cAAgB7iN,GAAGiS,EAAI0wM,KAAMT,KACjC,MAAMz6I,EAAQl1E,GAAG,CAAC0f,EAAI2wM,gBAAiB3wM,EAAI4wM,eAAgB,GAE3D,OADA5zO,OAAOo7D,KAAKp4B,GAAKlgC,QAASi6B,GAAW1W,GAAG2c,EAAIjG,KACrCy7D,EAETv8F,eAAe43O,IAASzoB,EAAYtH,GAClC,IAAIkJ,EAAKC,EAAKC,EAAKwI,EAAKn9N,EAAImpO,EAC5B,IAAKtW,GAAcA,EAAW,uBAAqD,IAA5BA,EAAW7uJ,MAAMn8D,QAAgBgrN,EAAW7uJ,MAAM,GAAK,GAAK6uJ,EAAW7uJ,MAAM,GAAK,EACvI,MAAO,GACT,MAAMv5B,EAAM,GACZA,EAAI8wM,QAAUroN,GAAGo3E,eAAeuoH,EAAY,CAAC4nB,IAAYA,MACzDhwM,EAAIxc,IAAMC,GAAGuc,EAAI8wM,QAAS7c,IAAUK,OACpCt0L,EAAIykD,WAAanrD,GAAG0G,EAAIxc,IAAKywM,IAAUI,MACvC,MAAMmR,EAAgB,MAAVgK,SAAiB,EAASA,IAAOnjH,QAAQrsF,EAAIykD,YACzD,GAAI11B,MAAMC,QAAQw2K,IAAQA,EAAIpoO,OAAS,EAAG,CACxC,MAAMgzF,EAASo1I,EAAIv2K,KAAK,CAACrsB,EAAG+H,IAAM/H,EAAE02B,KAAO3uB,EAAE2uB,MAC7Ct5B,EAAI+wM,UAAY7wN,GAAG,CAACkwE,EAAO,GAAIA,EAAO,IAAK,GAC3CpwD,EAAIgxM,UAAY9wN,GAAG,CAACkwE,EAAO,GAAIA,EAAO,IAAK,GAC3CpwD,EAAI/f,OAASC,GAAG,CAAC8f,EAAIgxM,UAAWhxM,EAAI+wM,WAAY,GAChD/wM,EAAIixM,MAAQr4M,GAAGoH,EAAI/f,OAAQ,CAAC,SACnB8uC,MAAMC,QAAQw2K,GACvBxlM,EAAIixM,MAAQr4M,GAAG4sM,EAAI,IAEnBxlM,EAAIixM,MAAQr4M,GAAG4sM,GAEjBniN,GAAGmiN,GACHxlM,EAAIw1D,MAAQ26I,IAAanwM,EAAIixM,OAC7BjxM,EAAIskD,OAASztD,GAAGmJ,EAAIixM,MAAO,CAAC,EAAG,GAAI,EAAE,EAAG,IACxCjxM,EAAI9J,QAAUC,GAAG6J,EAAIskD,QACrBtkD,EAAIk3D,OAASt+D,GAAGoH,EAAI9J,SACpB8J,EAAIolM,UAAY38M,GAAGw3E,uBAAuBjgE,EAAIw1D,MAAOx1D,EAAIk3D,QAA0C,OAAhC8yH,EAAMlJ,EAAQxpN,KAAKgC,eAAoB,EAAS0wN,EAAI9G,cAAgB,GAAqC,OAAhC+G,EAAMnJ,EAAQxpN,KAAKgC,eAAoB,EAAS2wN,EAAInzH,eAAiB,GAAqC,OAAhCozH,EAAMpJ,EAAQxpN,KAAKgC,eAAoB,EAAS4wN,EAAI7G,gBAAkB,GAC5R,MAAM+hB,QAAYplM,EAAIolM,IAAIpmL,QACpBw2C,EAAQ,GACR0B,QAAel3D,EAAIk3D,OAAOh9C,OAChC,IAAK,IAAI/8C,EAAI,EAAGA,EAAIioO,EAAIhoO,OAAQD,IAAK,CACnC,MAAMquO,EAAat0I,EAAOkuI,EAAIjoO,IAC9B,GAAIquO,IAAgD,OAAhC9Y,EAAM5R,EAAQxpN,KAAKgC,eAAoB,EAASo5N,EAAIrP,gBAAkB,GAAI,CAC5F,MAAM14K,EAAI,GACVA,EAAEumM,KAAOr6M,GAAGmJ,EAAIw1D,MAAO,CAAC4vI,EAAIjoO,GAAI,GAAI,CAAC,GAAI,IACzCwtC,EAAE/T,MAAQC,GAAGmJ,EAAIixM,MAAO,CAAC7L,EAAIjoO,GAAI2yO,IAAiB,GAAI,CAAC,GAAI,IAC3DnlM,EAAEhS,QAAUC,GAAG+R,EAAE/T,OACjB+T,EAAEi5K,UAAYzwL,GAAEwX,EAAEhS,QAAS,CAACm3M,KAAiB,IAC7C,MAAMhY,QAAentL,EAAEumM,KAAKh3L,OACtBi3L,EAAS,CACbhG,WAAY,CAACrT,EAAO,GAAIA,EAAO,IAC/BoT,SAAU,CAACpT,EAAO,GAAIA,EAAO,IAC7BlU,gBAAiBj5K,EAAEi5K,UAAU5kK,QAC7BwsL,cAEF7gM,EAAE85L,OAAS5tM,GAAGm3M,IAAS,CAAC5I,EAAIjoO,GAAI,GAAI,CAAC,EAAG,IACxC,MAAMsnO,QAAe95L,EAAE85L,OAAOvqL,OACxBk3L,EAAY7F,IAAoB4F,EAAQ,EAAE/oB,EAAW7uJ,MAAM,IAAM,GAAKy2K,KAAa5nB,EAAW7uJ,MAAM,IAAM,GAAKy2K,KAAavL,GAC5H4M,EAAc1F,IAAWyF,EAAWtwB,EAAQxpN,KAAK,UAAYy4O,KAC7DuB,EAAazF,IAAYwF,GAC3BC,EAAWh4K,KAAK,KAAuC,OAA/B/jE,EAAKurN,EAAQxpN,KAAKgC,eAAoB,EAAS/D,EAAG,aAAe,IAAM+7O,EAAWh4K,KAAK,KAAwC,OAAhColK,EAAM5d,EAAQxpN,KAAKgC,eAAoB,EAASolO,EAAI,aAAe,IAC5LlpI,EAAMn4F,KAAKi0O,GACbt0O,OAAOo7D,KAAKztB,GAAG7qC,QAASi6B,GAAW1W,GAAGsnB,EAAE5Q,MAI5C,OADA/8B,OAAOo7D,KAAKp4B,GAAKlgC,QAASi6B,GAAW1W,GAAG2c,EAAIjG,KACrCy7D,EAKT,IAAI+7I,IAAa,EACbC,IAAc,IACdC,IAAcpY,IAAgBqB,cAC9BgX,IAAerY,IAAgBW,eAC/B2X,IAAe,CACjBC,WAAY,CAACH,IAAY,GAAIA,IAAYA,IAAYr0O,OAAS,IAC9Dy0O,YAAa,CAACH,IAAa,GAAIA,IAAaA,IAAat0O,OAAS,KAEhE00O,IAAgB,CAClBC,YAAa,EACbC,YAAa,EACbjkK,MAAO,GACPkkK,eAAgB,IAElBh5O,eAAei5O,IAAMpxB,GACnB,IAAIkJ,EAAKC,EAUT,OATIrlM,GAAI2vB,UACNk7L,IAAS,MACNA,IAEI3uB,EAAQznN,OACfnB,GAAI,gBAAiBu3O,IAAO,aAF5BA,UAAehd,IAAuC,OAA5BzI,EAAMlJ,EAAQxpN,KAAKqC,WAAgB,EAASqwN,EAAIhgJ,WAG5EunK,KAAwB,MAAV9B,SAAiB,EAASA,IAAO,eAA0C,OAAxBxlB,EAAMwlB,IAAOz2K,aAAkB,EAASixJ,EAAI,GAAG1wJ,OAASk2K,IAAOz2K,OAAO,GAAGO,MAAM,GAAK,GACjI,IAAhBg4K,MACFA,IAAa,IACR9B,IAET,SAAS0C,IAAkBC,EAAWC,EAAWhuB,EAAQjsJ,GACvD,IAAK,IAAIj7D,EAAI,EAAGA,EAAIg/N,IAAY/+N,OAAQD,IAAK,CAC3C,MAAM,IAAEiE,EAAG,QAAE69E,GAAYk9I,IAAYh/N,GAC/Bm1O,EAAkBjZ,IAAgB,GAAGhV,IAASjjN,KACpD,IAAKg3D,GAAQA,EAAKj6D,SAASiD,GACzB,IAAK,IAAI+/N,EAAM,EAAGA,EAAMliJ,EAAQ7hF,OAAQ+jO,IAAO,CAC7C,MAAM9a,EAASpnI,EAAQkiJ,GACvBiR,EAAUE,EAAgBnR,IAAQ,CAChCkR,EAAUhsB,GAAQ,GAClBgsB,EAAUhsB,GAAQ,IACjBgsB,EAAUhsB,GAAQ,GAAK+rB,EAAUE,EAAgBnR,IAAM,IAAM,KAMxE,IAAIoR,IAAoCH,IACtC,MAAMI,EAAWJ,EAAUT,IAAaC,WAAW,IAAI,GACjDa,EAAYL,EAAUT,IAAaE,YAAY,IAAI,GACzD,OAAOW,EAAWC,GAEhBC,IAAY,CAACN,EAAW/C,EAAOsD,EAAqBC,EAAqBC,EAAU1wB,GAAO,KAC5F,MAAMhmN,EAAM0vO,IAAYF,IAAWI,IAA8B,CAACqG,EAAUO,GAAsBP,EAAUQ,KAAwBpB,MAC9H9C,EAAUzD,IAAW9uO,GAC3B,IAAIqxN,EAAO/kM,GAAGs3E,cAAcsvI,EAAO,CAAC,CAClClzO,EAAIgvO,WAAW,GAAK0H,EACpB12O,EAAIgvO,WAAW,GAAK0H,EACpB12O,EAAI+uO,SAAS,GAAK2H,EAClB12O,EAAI+uO,SAAS,GAAK2H,IAChB,CAAC,GAAI,CAACtB,IAAYA,MACtB,GAAIpvB,GAAQv9L,GAAIi6C,QAAQ1gE,SAAS,iBAAkB,CACjD,MAAM20O,EAAUrqN,GAAGi3E,cAAc8tH,GACjCnqM,GAAGmqM,GACHA,EAAOslB,EAET,MAAO,CAAE32O,MAAKuyO,UAASlhB,SAErBulB,IAAe,CAACC,EAASC,EAAQC,EAAY/wB,GAAO,KACtD,MAAMgxB,EAAe,GACrB,IAAK,IAAIh2O,EAAI,EAAGA,EAAI20O,IAAcG,eAAgB90O,IAAK,CACrD,MAAMjB,EAAI82O,EAAY,EAAJ71O,GACZ2pN,EAAKksB,EAAY,EAAJ71O,EAAQ,GACrBmsC,EAAI0pM,EAAY,EAAJ71O,EAAQ,GAC1Bg2O,EAAa91O,KAAK,EACf8kN,EAAO,EAAIjmN,EAAIq1O,IAAar1O,EAAIq1O,KAAc2B,EAAW,GAAKD,EAAO9H,WAAW,GACjFrkB,EAAKyqB,IAAa2B,EAAW,GAAKD,EAAO9H,WAAW,GACpD7hM,IAGJ,MAAO,CAAE8oM,UAAWe,EAAcx5O,KAAMw5O,EAAav8M,MAAMk7M,IAAc/jK,SAEvEqlK,IAAwB,CAAChB,EAAWiB,EAAYC,KAClD,MAAMC,EAAenB,EAAU/Y,IAAmBia,EAAH,aAAyBxB,IAAcC,cAAc,GAC9FyB,EAAepB,EAAU/Y,IAAmBia,EAAH,aAAyBxB,IAAcE,cAAc,GAC9FyB,GAAYF,EAAeC,GAAgB,EACjD,OAAOH,EAAWn2O,IAAI,CAAC0xO,EAAOzxO,KAC5B,IAAImsC,EAAImqM,EAMR,OALU,IAANt2O,EACFmsC,EAAIiqM,EACW,IAANp2O,IACTmsC,EAAIkqM,GAEC,CAAC5E,EAAM,GAAIA,EAAM,GAAItlM,MAGhCrwC,eAAey6O,IAAYtB,EAAW/C,EAAOwD,GAC3C,KAAgB,MAAVpD,SAAiB,EAASA,IAAO,aACrC,OAAO2C,EACT,MAAQj2O,IAAKw3O,EAAYjF,QAASkF,EAAgBpmB,KAAMqmB,GAAgBnB,IAAUN,EAAW/C,EAAOsC,IAAaC,WAAW,GAAID,IAAaC,WAAW,GAAIiB,GAAU,IAC9J12O,IAAK23O,EAAapF,QAASqF,EAAiBvmB,KAAMwmB,GAAiBtB,IAAUN,EAAW/C,EAAOsC,IAAaE,YAAY,GAAIF,IAAaE,YAAY,GAAIgB,GAAU,GACrKoB,EAAW/zN,GAAG,CAAC2zN,EAAaG,IAClC3wN,GAAGwwN,GACHxwN,GAAG2wN,GACH,MAAME,EAAiBzE,IAAOpjH,QAAQ4nH,GACtC5wN,GAAG4wN,GACH,MAAME,QAA2BD,EAAeh6L,OAChD72B,GAAG6wN,GACH,MAAME,EAAcD,EAAmBv9M,MAAM,EAAkC,EAA/Bk7M,IAAcG,iBACtDG,UAAWiC,EAAkB16O,KAAM26O,GAAsBvB,IAAaqB,EAAaT,EAAYC,GAAgB,GACjHW,EAAeJ,EAAmBv9M,MAAqC,EAA/Bk7M,IAAcG,iBACpDG,UAAWoC,EAAmB76O,KAAM86O,GAAuB1B,IAAawB,EAAcT,EAAaC,GAAiB,GACtHW,EAAgCnC,IAAiCH,GACnE11O,KAAKgf,IAAIg5N,GAAiC,IAC5CvC,IAAkBC,EAAWiC,EAAkB,OAAQ,MACvDlC,IAAkBC,EAAWoC,EAAmB,QAAS,OAChDE,EAAgC,EACzCvC,IAAkBC,EAAWiC,EAAkB,OAAQ,CAAC,YAAa,cAErElC,IAAkBC,EAAWoC,EAAmB,QAAS,CAAC,YAAa,cAEzE,MAAMG,EAAyBvB,IAAsBhB,EAAWkC,EAAmB,QAC7EM,EAA0BxB,IAAsBhB,EAAWqC,EAAoB,SAC/EpC,EAAYD,EAAUnyN,OAAO00N,GAAwB10N,OAAO20N,GAClE,OAAOvC,EAITp5O,eAAe47O,IAAQzC,EAAWrJ,GAChC,IAAI/e,EAAKC,EAAKC,EAAKwI,EAAKn9N,EAAImpO,EAAKC,EAAKC,EAAKC,EAAKiW,EAChD,MAAM90M,EAAM,CAIV+9L,WAAgG,OAAlF9T,EAAuD,OAAhDD,EAAM+e,EAAQ7vO,OAAQ2mC,GAAiB,MAAXA,EAAEy5B,YAAyB,EAAS0wJ,EAAI,SAAc,EAASC,EAAI/vK,QAEpH66L,YAAgG,OAAjFriB,EAAsD,OAA/CxI,EAAM6e,EAAQ7vO,OAAQ2mC,GAAiB,KAAXA,EAAEy5B,YAAwB,EAAS4wJ,EAAI,SAAc,EAASwI,EAAIx4K,QAEpH86L,WAA8F,OAAhFtW,EAAsD,OAA/CnpO,EAAKwzO,EAAQ7vO,OAAQ2mC,GAAiB,MAAXA,EAAEy5B,YAAyB,EAAS/jE,EAAG,SAAc,EAASmpO,EAAIxkL,QAElH+6L,YAAgG,OAAjFrW,EAAsD,OAA/CD,EAAMoK,EAAQ7vO,OAAQ2mC,GAAiB,KAAXA,EAAEy5B,YAAwB,EAASqlK,EAAI,SAAc,EAASC,EAAI1kL,QAEpHg7L,WAAgG,OAAlFJ,EAAuD,OAAhDjW,EAAMkK,EAAQ7vO,OAAQ2mC,GAAiB,MAAXA,EAAEy5B,YAAyB,EAASulK,EAAI,SAAc,EAASiW,EAAI56L,SAGtH,IAAK,MAAMqyK,KAAOvvN,OAAOC,OAAO+iC,GAC9B,IAAKusL,EACH,OAAO6lB,EAEX,MAAM+C,EAAa3W,IAAqCpuK,OAAO,CAACmxJ,EAAMupB,IAASvpB,EAAQ6wB,EAAUtH,GAAM,GAAI,GAAKtM,IAAqCphO,OACrJ,IAAK,IAAID,EAAI,EAAGA,EAAI6iC,EAAI+0M,MAAM33O,OAAS,EAAGD,IACxCi1O,EAAU/0O,KAAK,CAAC2iC,EAAI+0M,MAAM,EAAI53O,EAAI,GAAI6iC,EAAI+0M,MAAM,EAAI53O,EAAI,GAAIg4O,IAC9D,MAAMC,EAAa3W,IAAsCruK,OAAO,CAACmxJ,EAAMupB,IAASvpB,EAAQ6wB,EAAUtH,GAAM,GAAI,GAAKrM,IAAsCrhO,OACvJ,IAAK,IAAID,EAAI,EAAGA,EAAI6iC,EAAIi1M,MAAM73O,OAAS,EAAGD,IACxCi1O,EAAU/0O,KAAK,CAAC2iC,EAAIi1M,MAAM,EAAI93O,EAAI,GAAI6iC,EAAIi1M,MAAM,EAAI93O,EAAI,GAAIi4O,IAC9D,IAAK,IAAIj4O,EAAI,EAAGA,EAAI6iC,EAAIg1M,KAAK53O,OAAS,EAAGD,IACvCi1O,EAAU5T,IAAqCrhO,IAAM,CAAC6iC,EAAIg1M,KAAK,EAAI73O,EAAI,GAAI6iC,EAAIg1M,KAAK,EAAI73O,EAAI,GAAIi1O,EAAU5T,IAAqCrhO,IAAI,IACrJ,IAAK,IAAIA,EAAI,EAAGA,EAAI6iC,EAAIk1M,KAAK93O,OAAS,EAAGD,IACvCi1O,EAAU3T,IAAsCthO,IAAM,CAAC6iC,EAAIk1M,KAAK,EAAI/3O,EAAI,GAAI6iC,EAAIk1M,KAAK,EAAI/3O,EAAI,GAAIi1O,EAAU3T,IAAsCthO,IAAI,IACvJ,IAAK,IAAIA,EAAI,EAAGA,EAAI6iC,EAAI+9L,KAAK3gO,OAAS,EAAGD,IACvCi1O,EAAU7T,IAAiCphO,IAAM,CAAC6iC,EAAI+9L,KAAK,EAAI5gO,EAAI,GAAI6iC,EAAI+9L,KAAK,EAAI5gO,EAAI,GAAIi1O,EAAU7T,IAAiCphO,IAAI,IAC7I,OAAOi1O,EAIT,IAAIiD,IAAS,CACX7/I,MAAO,GACPywI,QAASl4K,OAAOy/C,iBAChB8nI,UAAW,GAETC,IAAS,KACTC,IAAa,EACjBv8O,eAAew8O,IAASr3J,EAAO0iI,GAC7B,IAAIkJ,EAAKC,EAAKC,EAAKwI,EAAKn9N,EAAImpO,EAAKC,EAAKC,EAAKC,EAAKiW,EAChD,MAAM1xB,IAA8C,OAAhC4G,EAAMlJ,EAAQxpN,KAAKgC,eAAoB,EAAS0wN,EAAI5G,WAAa,GAAKpmK,KAAQq4L,IAAOC,UACnGjqB,EAAYgqB,IAAOpP,UAA6C,OAAhChc,EAAMnJ,EAAQxpN,KAAKgC,eAAoB,EAAS2wN,EAAI9G,aAAe,GACpGrC,EAAQkB,aAAgBoB,GAAaiI,GAAqC,IAAxBgqB,IAAO7/I,MAAMp4F,OAKlEi4O,IAAOpP,WAJPoP,IAAO7/I,YAAcq7I,IAASzyJ,EAAO0iI,GACrCu0B,IAAOC,UAAYt4L,KACnBq4L,IAAOpP,QAAU,GAInB,MAAMyP,EAAQ,GACRC,EAAW,GACjB,IAAI1M,EAAM,EACV,MAAMjhB,EAAQwtB,IACd,IAAK,IAAIr4O,EAAI,EAAGA,EAAIk4O,IAAO7/I,MAAMp4F,OAAQD,IAAK,CAC5C,MAAMhB,EAAMk5O,IAAO7/I,MAAMr4F,GACzB,IACIgwO,EADA9U,EAAQ,EAEZ,MAAMgX,EAAQ,CAEZ13M,GAAIsxM,IACJ1lB,KAAM,GACNqyB,QAAS,GACTz5O,IAAK,CAAC,EAAG,EAAG,EAAG,GACfkpO,OAAQ,CAAC,EAAG,EAAG,EAAG,GAClBxtI,MAAO,EACPg+I,SAAU,EACVC,UAAW,EACXx8K,KAAM,CAAC,EAAG,GAGVkmK,YAAa,IAGf,IADCnH,EAAO8U,EAAgBkC,EAAMt1M,QAAUo1M,IAAqD,OAAhCjlB,EAAMpJ,EAAQxpN,KAAKgC,eAAoB,EAAS4wN,EAAI3wN,SAAU4C,EAAKiiF,GAAqC,OAA5Bs0I,EAAM5R,EAAQxpN,KAAKisN,WAAgB,EAASmP,EAAIv5N,SAAWq8O,IAAal8K,OAC7MwnJ,EAAQ5nN,OAAOE,aAAc,CAC/B,MAAM28O,EAAY1G,EAAMt1M,aAAeouL,GAAsBknB,EAAMt1M,aAAU,EAC7E1W,GAAGgsN,EAAMt1M,QACLg8M,IACF1G,EAAMt1M,OAASg8M,GAGnB,GADA1G,EAAMwG,SAAWn5O,KAAKs3B,MAAM,IAAM73B,EAAIqvO,YAAc,KAClB,OAA3Bj2O,EAAKurN,EAAQxpN,KAAKisN,WAAgB,EAAShuN,EAAG4D,WAAwB,MAAVo8O,SAAiB,EAASA,IAAO,aAS7F,GAAKA,IAGL,CACL,IAAuC,OAAjC7W,EAAM5d,EAAQxpN,KAAKmsN,gBAAqB,EAASib,EAAIvlO,WAAayrB,GAAIi6C,QAAQ1gE,SAAS,SAG3F,OAFA2iN,EAAQxpN,KAAKmsN,UAAUtqN,SAAU,EACjCkqB,GAAGgsN,EAAMt1M,QACF27M,EAET,MAAM3M,EAAUwM,IAAOlpH,QAAQgjH,EAAMt1M,QAC/Bi8M,EAAcjN,EAAQzsH,KAAMt8E,GAA4C,IAApCA,EAAIu5B,MAAMv5B,EAAIu5B,MAAMn8D,OAAS,IACjE64O,QAAuBD,EAAY97L,OAEzC,GADAm1L,EAAMyG,UAAYp5O,KAAKs3B,MAAM,IAAMiiN,EAAe,IAAM,IACpD5G,EAAMyG,YAA+C,OAAhCnX,EAAM7d,EAAQxpN,KAAKgC,eAAoB,EAASqlO,EAAItb,gBAAkB,IAE7F,GADAlnN,EAAIqvO,WAAa6D,EAAMyG,UACnBh1B,EAAQxpN,KAAKisN,KAAK,eAAgB,CACpC8rB,EAAMlzO,IAAMkvO,IAASlvO,EAAKiiF,GAC1BixJ,EAAMhK,OAASiG,IAAUnvO,EAAKiiF,GAC9BixJ,EAAMx3I,MAAQw3I,EAAMwG,SACpBxG,EAAM9rB,KAAOpnN,EAAIynN,UACjByrB,EAAMuG,QAAUvG,EAAM9rB,KAAKrmN,IAAKi2C,GAAO,CAACA,EAAG,IAAMirC,EAAM7kB,MAAM,IAAM,GAAIpmB,EAAG,IAAMirC,EAAM7kB,MAAM,IAAM,IAAKpmB,EAAG,IAAM,GAAK60K,IACrH,IAAK,MAAM5mN,KAAOpE,OAAOo7D,KAAKyjK,KAC5BwT,EAAM7P,YAAYp+N,GAAO,CAACiuO,EAAM9rB,KAAKsY,IAAmBz6N,UAGvD,CACL,MAAM80O,EAAQnN,EAAQzsH,KAAMt8E,GAA4C,OAApCA,EAAIu5B,MAAMv5B,EAAIu5B,MAAMn8D,OAAS,IAC3D+4O,EAAiBhjN,GAAE+iN,EAAO,EAAE,EAAG,IACrC,IAAI9D,QAAkB+D,EAAen3L,QACrC37B,GAAG8yN,IACmC,OAAjCvX,EAAM9d,EAAQxpN,KAAKmsN,gBAAqB,EAASmb,EAAIzlO,SACxDi5O,QAAkByC,IAAQzC,EAAWrJ,IACC,OAA5BlK,EAAM/d,EAAQxpN,KAAKqC,WAAgB,EAASklO,EAAI1lO,WAC1Di5O,QAAkBsB,IAAYtB,EAAW/C,EAAMt1M,OAAQy7M,MAEzDnG,EAAM9rB,KAAOirB,IAAmB4D,EAAWj2O,EAAKk8N,EAAO8U,EAAgBqI,KACvEnG,EAAMuG,QAAUvG,EAAM9rB,KAAKrmN,IAAKi2C,GAAO,CAACA,EAAG,IAAMirC,EAAM7kB,MAAM,IAAM,GAAIpmB,EAAG,IAAMirC,EAAM7kB,MAAM,IAAM,IAAKpmB,EAAG,IAAM,GAAK60K,IACrH,IAAK,MAAM5mN,KAAOpE,OAAOo7D,KAAKihK,KAC5BgW,EAAM7P,YAAYp+N,GAAOi4N,IAAgBj4N,GAAKlE,IAAKmpN,GAAWgpB,EAAM9rB,KAAK8C,IAC3EgpB,EAAMx3I,MAAQw3I,EAAMyG,UACpB,MAAMjG,EAAgB,IACjBF,IAAiBN,EAAM9rB,KAAMpnN,GAChCqvO,WAAYrvO,EAAIqvO,WAChB5nB,UAAWznN,EAAIynN,UACftqJ,KAAMn9D,EAAIm9D,MAEZ+1K,EAAMlzO,IAAMkvO,IAASwE,EAAezxJ,GACpCixJ,EAAMhK,OAASiG,IAAUuE,EAAezxJ,GACxCu3J,EAASt4O,KAAKwyO,GAEhBxsN,GAAG0lN,QAjDCjoB,EAAQznN,OACVnB,GAAI,8DAX0G,CAChHm3O,EAAMlzO,IAAMkvO,IAASlvO,EAAKiiF,GAC1BixJ,EAAMhK,OAASiG,IAAUnvO,EAAKiiF,GAC9BixJ,EAAMx3I,MAAQw3I,EAAMwG,SACpBxG,EAAM/1K,KAAOn9D,EAAIm9D,KACjB+1K,EAAM9rB,KAAOpnN,EAAIynN,UACjByrB,EAAMuG,QAAUvG,EAAM9rB,KAAKrmN,IAAKi2C,GAAO,CAACA,EAAG,IAAMirC,EAAM7kB,MAAM,IAAM,GAAIpmB,EAAG,IAAMirC,EAAM7kB,MAAM,IAAM,IAAKpmB,EAAG,IAAM,GAAK60K,IACrH,IAAK,MAAM5mN,KAAOpE,OAAOo7D,KAAKyjK,KAC5BwT,EAAM7P,YAAYp+N,GAAO,CAACiuO,EAAM9rB,KAAKsY,IAAmBz6N,KAqDxDiuO,EAAMx3I,QAA2C,OAAhCi9I,EAAMh0B,EAAQxpN,KAAKgC,eAAoB,EAASw7O,EAAIzxB,gBAAkB,GACzFqyB,EAAMr4O,KAAKgyO,GAEXhsN,GAAGgsN,EAAMt1M,QAGb,OADAs7M,IAAO7/I,MAAQmgJ,EACRD,EAETz8O,eAAem9O,IAAMt1B,GACnB,IAAIkJ,EAAKC,EAAKC,EAAKwI,EAAKn9N,EAAImpO,EAgB5B,OAfI95M,GAAI2vB,UACNghM,IAAS,OAC4B,OAAjCvrB,EAAMlJ,EAAQxpN,KAAKmsN,gBAAqB,EAASuG,EAAI7wN,WAAuB,MAAVo8O,SAAiB,EAASA,IAAO,eACnGv4O,OAAOo7D,MAA+D,OAAxD6xJ,EAAgB,MAAVsrB,SAAiB,EAASA,IAAO,mBAAwB,EAAStrB,EAAIlxJ,UAAY,IAAI37D,OAAS,IACrHm4O,IAAS,MAERA,IAKMz0B,EAAQznN,OACjBnB,GAAI,gBAAiBq9O,IAAO,aAJ1BA,KADoC,OAAjCrrB,EAAMpJ,EAAQxpN,KAAKmsN,gBAAqB,EAASyG,EAAI/wN,eACzCs5N,IAAU3R,EAAQxpN,KAAKmsN,UAAUz5I,iBAEjCyoJ,IAAuC,OAA5BC,EAAM5R,EAAQxpN,KAAKisN,WAAgB,EAASmP,EAAI1oJ,WAI9EwrK,IAAaD,IAAO,cAAkE,OAAjDhgP,EAAe,MAAVggP,SAAiB,EAASA,IAAOv8K,aAAkB,EAASzjE,EAAG,GAAGgkE,OAA4D,OAAlDmlK,EAAgB,MAAV6W,SAAiB,EAASA,IAAOv8K,aAAkB,EAAS0lK,EAAI,GAAGnlK,MAAM,GAAK,IACnMg8K,IAET,IAKIc,IAyEAC,IA9EAC,IAAgBla,IAChBma,IAAQpa,IAGRoD,IAAc,GAEdiX,IAAQ,GACRC,IAAY,EACZC,IAAY,EACZC,IAAW7oL,OAAOy/C,iBAClB+mH,KAAM,EACVt7N,eAAe49O,IAAM/1B,GACnB,IAAIkJ,EAAKC,EAAKC,EAad,OAZItlM,GAAI2vB,UACN8hM,IAAS,MACNA,IAOMv1B,EAAQznN,OACjBnB,GAAI,gBAAiBm+O,IAAO,cAP5BA,UAAe5jB,IAA0C,OAA/BzI,EAAMlJ,EAAQxpN,KAAKsC,cAAmB,EAASowN,EAAIhgJ,WAC7EuqJ,IAA8H,KAA5B,OAA1FrK,EAAyD,OAAlDD,EAAgB,MAAVosB,SAAiB,EAASA,IAAOr9K,aAAkB,EAASixJ,EAAI,GAAG1wJ,YAAiB,EAAS2wJ,EAAI,IAIpHsV,IAHGjL,IAGW,CAAC,QAAS,UAAW,OAAQ,QAAS,UAAW,MAAO,YAFxD,CAAC,QAAS,UAAW,OAAQ,QAAS,MAAO,WAAY,YAMpE8hB,IAETp9O,eAAe69O,IAAShgP,EAAOgqN,EAASi2B,EAAKC,GAC3C,IAAIhtB,EAAKC,EACT,IAAKosB,IACH,MAAO,GACT,MAAMhrB,EAAYurB,MAA6C,OAA/B5sB,EAAMlJ,EAAQxpN,KAAKsC,cAAmB,EAASowN,EAAI7G,aAAe,GAC5FC,IAA6C,OAA/B6G,EAAMnJ,EAAQxpN,KAAKsC,cAAmB,EAASqwN,EAAI7G,WAAa,GAAKpmK,KAAQ25L,IACjG,OAAI71B,EAAQkB,aAAeoB,GAAYiI,GAAaqrB,MAAcM,GAAUP,IAAMM,IAAQN,IAAMM,GAAK35O,OAAS,GAC5Gw5O,MACOH,IAAMM,KAEfH,IAAW,EACJ,IAAItoM,QAAQr1C,MAAOw9C,IACxB,IAAIwgM,EACJ,MAAM91O,EAAM,GACZ,GAAoC,OAA/B81O,EAAMn2B,EAAQxpN,KAAKsC,cAAmB,EAASq9O,EAAI99O,QAAS,CAC/D,MAAM6mC,EAAM,GACN8tM,GAAyB,MAAVuI,SAAiB,EAASA,IAAOr9K,OAAO,GAAGO,OAAS88K,IAAOr9K,OAAO,GAAGO,MAAM,GAAK,EACrG,GAAIunJ,EAAQxpN,KAAKsC,QAAQ,QAAU,EAAG,CACpC,MAAM4zN,EAAO1M,EAAQxpN,KAAKsC,QAAQ,QAC5BuC,EAAM,CAAC,CAACqxN,EAAMA,EAAM,EAAIA,EAAM,EAAIA,IACxCxtL,EAAIglF,OAASv8F,GAAGs3E,cAAcjpG,EAAOqF,EAAK,CAAC,GAAI,CAAC2xO,EAAaA,SAE7D9tM,EAAIglF,OAASv8F,GAAGo3E,eAAe/oG,EAAO,CAACg3O,EAAaA,IAAc,GAEhEvZ,KACFv0L,EAAIlS,IAAMC,GAAGiS,EAAIglF,OAAQ,KACzBhlF,EAAI0P,UAAYpW,GAAG0G,EAAIlS,IAAK,CAAC,QAAS,QAAS,SAC/CkS,EAAIpmC,QAAoB,MAAVy8O,SAAiB,EAASA,IAAOhqH,QAAQrsF,EAAI0P,aAE3D1P,EAAIqkC,SAAWt2C,GAAGiS,EAAIglF,OAAQivG,IAAUM,KACxCv0L,EAAIk3M,UAAY19M,GAAGwG,EAAIqkC,SAAU,GAAG,GACpCrkC,EAAIm3M,aAAe79M,GAAG0G,EAAIk3M,UAAWjjB,IAAUI,MAC/Cr0L,EAAIo3M,aAAerpN,GAAGiS,EAAIm3M,aAAcljB,IAAUG,KAClDp0L,EAAIpmC,QAAoB,MAAVy8O,SAAiB,EAASA,IAAOhqH,QAAQrsF,EAAIo3M,eAE7DT,IAAY35L,KACZ,MAAM9C,QAAala,EAAIpmC,QAAQsgD,OAC/B,IAAK,IAAI/8C,EAAI,EAAGA,EAAI+8C,EAAK98C,OAAQD,IAC3B+8C,EAAK/8C,IAAM2jN,EAAQxpN,KAAKsC,QAAQypN,eAAiB,IACnDliN,EAAI9D,KAAK,CAAEw6F,MAAOn7F,KAAKC,IAAI,IAAMD,KAAK43E,MAAM,IAAMp6B,EAAK/8C,IAAM,KAAMvD,QAAS4lO,IAAYriO,KAE5FgE,EAAI8tD,KAAK,CAACrsB,EAAG+H,IAAMA,EAAEktD,MAAQj1D,EAAEi1D,OAC/B76F,OAAOo7D,KAAKp4B,GAAKlgC,QAASi6B,GAAW1W,GAAG2c,EAAIjG,KAE9C08M,IAAMM,GAAO51O,EACbu1O,IAAYM,EACZvgM,EAAQt1C,MAMZ,IAAIk2O,IAAQ,GACRC,IAAY,EACZC,IAAa,EACbC,IAAWzpL,OAAOy/C,iBACtBv0G,eAAew+O,IAAM32B,GACnB,IAAIkJ,EAOJ,OANIplM,GAAI2vB,UACN+hM,IAAS,MACNA,IAEIx1B,EAAQznN,OACfnB,GAAI,gBAAiBo+O,IAAO,aAF5BA,UAAe7jB,IAA8C,OAAnCzI,EAAMlJ,EAAQxpN,KAAKoC,kBAAuB,EAASswN,EAAIhgJ,WAG5EssK,IAET,SAASoB,IAAQt5J,GACf,MAAMrkD,EAASqkD,EAAMtnF,OAASsnF,EAAMrkD,QAAUqkD,EAC9C,KAAgB,MAAVk4J,SAAiB,EAASA,IAAOt9K,OAAO,GAAGO,OAC/C,OAAOx/B,EACT,MAAMyzL,EAAO/kM,GAAGo3E,eAAe9lE,EAAQ,CAACu8M,IAAOt9K,OAAO,GAAGO,MAAM,GAAI+8K,IAAOt9K,OAAO,GAAGO,MAAM,KAAK,GACzF/qC,EAAOT,GAAGy/L,EAAMyG,IAAUC,OAEhC,OADA7wM,GAAGmqM,GACIh/L,EAETv1B,eAAe0+O,IAAS7gP,EAAOgqN,EAASi2B,EAAKC,GAC3C,IAAIhtB,EAAKC,EAAKC,EAAKwI,EACnB,MAAMvxN,EAAM,CACVwtN,IAAK,EACL0B,OAAQ,UACRyO,YAAa,EACb8Y,WAAY,IAEd,KAAgB,MAAVtB,SAAiB,EAASA,IAAO,aACrC,OAAOn1O,EACT,MAAMkqN,EAAYmsB,MAAiD,OAAnCxtB,EAAMlJ,EAAQxpN,KAAKoC,kBAAuB,EAASswN,EAAI7G,aAAe,GAChGC,IAAiD,OAAnC6G,EAAMnJ,EAAQxpN,KAAKoC,kBAAuB,EAASuwN,EAAI7G,WAAa,GAAKpmK,KAAQs6L,IACrG,OAAIx2B,EAAQkB,aAAeqJ,GAAajI,GAAYm0B,MAAeP,IAA0D,OAA9C9sB,EAAe,MAATmtB,SAAgB,EAASA,IAAMN,SAAgB,EAAS7sB,EAAIyE,KAAO,IAAqD,OAA9C+D,EAAe,MAAT2kB,SAAgB,EAASA,IAAMN,SAAgB,EAASrkB,EAAIoM,aAAe,GAC9O0Y,MACOH,IAAMN,KAEfS,IAAW,EACJ,IAAIlpM,QAAQr1C,MAAOw9C,IACxB,IAAIwgM,EACJ,GAAwC,OAAnCA,EAAMn2B,EAAQxpN,KAAKoC,kBAAuB,EAASu9O,EAAI99O,QAAS,CACnE,MAAM0+O,EAAWH,IAAQ5gP,GACnB4zO,EAAiB,MAAV4L,SAAiB,EAASA,IAAOjqH,QAAQwrH,GACtDP,IAAYt6L,KACZ35B,GAAGw0N,GACH,MAAMC,EAAUpN,EAAKpuH,KAAMt8E,GAAyB,IAAjBA,EAAIu5B,MAAM,IACvCw+K,QAAgBD,EAAQ59L,OACxBsxL,EAAa9uO,KAAK43E,MAAM,IAAM53E,KAAKgf,IAAIq8N,EAAQ,GAAK,KAAQ,IAC9DvM,GAAc1qB,EAAQxpN,KAAKoC,YAAY2pN,eAAiB,KAC1DliN,EAAIkvN,OAAS0nB,EAAQ,IAAM,GAAM,SAAW,OAC5C52O,EAAI29N,YAAcpiO,KAAKC,IAAI,IAAM6uO,IAEnC,MAAMwM,EAASx7N,GAAGkuN,EAAKpuH,KAAMt8E,GAAyB,MAAjBA,EAAIu5B,MAAM,IAAa,GACtD0+K,SAAgBD,EAAO99L,QAAQ,GACrC72B,GAAG20N,GACH,MAAME,EAAOxN,EAAKpuH,KAAMt8E,GAAyB,MAAjBA,EAAIu5B,MAAM,IACpC73D,QAAaw2O,EAAKh+L,OACxB/4C,EAAIwtN,IAAMjyN,KAAKs3B,MAAMtyB,EAAKu2O,EAAS,GAAKv2O,EAAKu2O,EAAS,GAAK,GAAKA,EAAS,IAAMv2O,EAAKu2O,EAAS,GAAK,GAAKA,EAAS,IAAMv2O,EAAKu2O,EAAS,IAAM,IACtIlqL,OAAO3kC,MAAM2uN,EAAQ,KAAOhqL,OAAO3kC,MAAM1nB,EAAK,MAChDxJ,GAAI,iBAAkB,CAAE+zN,MAAOqqB,IAAQr6O,OAAQyuO,IACjD,MAAMyN,EAAOzN,EAAKpuH,KAAMt8E,GAAyB,OAAjBA,EAAIu5B,MAAM,IACpCq+K,EAAaO,QAAaA,EAAKj+L,OAAS,GAC9C/4C,EAAIy2O,WAAa7oL,MAAMwB,KAAKqnL,GAC5BlN,EAAK5qO,QAASkgC,GAAQ3c,GAAG2c,IAE3Bq3M,IAAMN,GAAO51O,EACbo2O,IAAaP,EACbvgM,EAAQt1C,MAKZ,IAuCIi3O,IAvCAC,IAAa,GACbp4J,IAAQ,GACZ,SAASq4J,IAAWp8O,EAAG4qN,EAAIyxB,GACzB,IAAIC,GAAS,EACTrX,EAAMoX,EAAQn7O,OAAS,EAC3B,IAAK,IAAID,EAAI,EAAGA,EAAIo7O,EAAQn7O,OAAQ+jO,EAAMhkO,IACpCo7O,EAAQp7O,GAAGf,EAAI0qN,IAAOyxB,EAAQpX,GAAK/kO,EAAI0qN,GAAM5qN,GAAKq8O,EAAQpX,GAAKjlO,EAAIq8O,EAAQp7O,GAAGjB,IAAM4qN,EAAKyxB,EAAQp7O,GAAGf,IAAMm8O,EAAQpX,GAAK/kO,EAAIm8O,EAAQp7O,GAAGf,GAAKm8O,EAAQp7O,GAAGjB,IACxJs8O,GAAUA,GAEd,OAAOA,EAETv/O,eAAeQ,IAAK41O,GAClB,IAAKA,EAAMt1M,OACT,OAAOs1M,EAAMt1M,OACf,IAAKs1M,EAAM9rB,MAAQ8rB,EAAM9rB,KAAKnmN,OAAS,IACrC,OAAOiyO,EAAMt1M,OACf,MAAMp+B,EAAQ0zO,EAAMt1M,OAAOw/B,MAAM,IAAM,EACjC19D,EAASwzO,EAAMt1M,OAAOw/B,MAAM,IAAM,EAClCl6C,QAAegwN,EAAMt1M,OAAO1a,SAClC,IAAIi6M,EAAa,GACjB,IAAK,MAAMnmL,KAAMkmL,IAAgBC,WAC/BA,EAAWj8N,KAAK,CAAEnB,GAAImzO,EAAM9rB,KAAKpwK,GAAI,GAAKk8L,EAAMlzO,IAAI,IAAMkzO,EAAMlzO,IAAI,GAAIC,GAAIizO,EAAM9rB,KAAKpwK,GAAI,GAAKk8L,EAAMlzO,IAAI,IAAMkzO,EAAMlzO,IAAI,KACxHk8O,KAAcA,IAAa,IAC7B/e,EAAaA,EAAWp8N,IAAKi2C,IAAO,CAAGj3C,EAAGi3C,EAAGj3C,EAAI,GAAMi3C,EAAGj3C,EAAIm8O,IAAallM,EAAGj3C,EAAIm8O,IAAYj8O,EAAG+2C,EAAG/2C,EAAI,GAAM+2C,EAAG/2C,EAAIi8O,IAAallM,EAAG/2C,EAAIi8O,QAC3I,IAAK,IAAIn8O,EAAI,EAAGA,EAAIP,EAAOO,IACzB,IAAK,IAAI4qN,EAAK,EAAGA,EAAKjrN,EAAQirN,IAAM,CAClC,MAAM0xB,EAASF,IAAWp8O,EAAIP,EAAOmrN,EAAKnrN,EAAO29N,GAC5Ckf,IACHn5N,EAAO7c,IAAIy9E,IAAQ5gE,EAAO1d,IAAI,EAAGmlN,EAAI5qN,EAAG,GAAI,EAAG4qN,EAAI5qN,EAAG,GACtDmjB,EAAO7c,IAAIy9E,IAAQ5gE,EAAO1d,IAAI,EAAGmlN,EAAI5qN,EAAG,GAAI,EAAG4qN,EAAI5qN,EAAG,GACtDmjB,EAAO7c,IAAIy9E,IAAQ5gE,EAAO1d,IAAI,EAAGmlN,EAAI5qN,EAAG,GAAI,EAAG4qN,EAAI5qN,EAAG,IAI5D,MAAM8pI,EAAS3mH,EAAOu/D,WACtB,OAAOonD,EAKT,IAsCIyyG,IAtCAC,IAAS,GACTC,IAAW5qL,OAAOy/C,iBAClBorI,IAAa,EACbC,IAAY,EAChB5/O,eAAe6/O,IAAMh4B,GACnB,IAAIkJ,EAOJ,OANIplM,GAAI2vB,UACN6jM,IAAU,MACPA,IAEIt3B,EAAQznN,OACfnB,GAAI,gBAAiBkgP,IAAQ,aAF7BA,UAAgB3lB,IAA4C,OAAjCzI,EAAMlJ,EAAQxpN,KAAKosN,gBAAqB,EAASsG,EAAIhgJ,WAG3EouK,IAETn/O,eAAe8/O,IAASjiP,EAAOgqN,EAASi2B,EAAKC,GAC3C,IAAIhtB,EAAKC,EACT,KAAiB,MAAXmuB,SAAkB,EAASA,IAAQ,aACvC,OAAO,EACT,MAAMh1B,IAA+C,OAAjC4G,EAAMlJ,EAAQxpN,KAAKosN,gBAAqB,EAASsG,EAAI5G,WAAa,GAAKpmK,KAAQ67L,IAC7FxtB,EAAYstB,MAA+C,OAAjC1uB,EAAMnJ,EAAQxpN,KAAKosN,gBAAqB,EAASuG,EAAI9G,aAAe,GACpG,OAAIrC,EAAQkB,aAAeoB,GAAYiI,GAAautB,MAAe5B,GAAU0B,IAAO3B,IAClF4B,MACOD,IAAO3B,KAEhB4B,IAAW,EACJ,IAAIrqM,QAAQr1C,MAAOw9C,IACxB,MAAMuuE,EAASv8F,GAAGo3E,eAAe/oG,EAAO,EAAa,MAAXshP,SAAkB,EAASA,IAAQp/K,OAAO,GAAGO,OAAS6+K,IAAQp/K,OAAO,GAAGO,MAAM,GAAK,GAAe,MAAX6+K,SAAkB,EAASA,IAAQp/K,OAAO,GAAGO,OAAS6+K,IAAQp/K,OAAO,GAAGO,MAAM,GAAK,IAAI,GAClNisK,EAAiB,MAAX4S,SAAkB,EAASA,IAAQ/rH,QAAQrH,GACjDzkC,SAAailJ,EAAItrL,QAAQ,GAC/Bw+L,IAAO3B,GAAOr6O,KAAKs3B,MAAM,IAAMusD,GAAO,IACtCq4J,IAAa5B,EACb6B,IAAY77L,KACZ35B,GAAG,CAAC2hG,EAAQwgH,IACZ/uL,EAAQiiM,IAAO3B,OAMnB,IAsCIiC,IAtCAC,IAAU,GACVC,IAAWnrL,OAAOy/C,iBAClB2rI,IAAa,EACbC,IAAY,EAChBngP,eAAeogP,IAAMv4B,GACnB,IAAIkJ,EAOJ,OANIplM,GAAI2vB,UACNkkM,IAAU,MACPA,IAEI33B,EAAQznN,OACfnB,GAAI,gBAAiBugP,IAAQ,aAF7BA,UAAgBhmB,IAA2C,OAAhCzI,EAAMlJ,EAAQxpN,KAAKqsN,eAAoB,EAASqG,EAAIhgJ,WAG1EyuK,IAETx/O,eAAeqgP,IAASxiP,EAAOgqN,EAASi2B,EAAKC,GAC3C,IAAIhtB,EAAKC,EACT,KAAiB,MAAXwuB,SAAkB,EAASA,IAAQ,aACvC,OAAO,EACT,MAAMr1B,IAA8C,OAAhC4G,EAAMlJ,EAAQxpN,KAAKqsN,eAAoB,EAASqG,EAAI5G,WAAa,GAAKpmK,KAAQo8L,IAC5F/tB,EAAY6tB,MAA8C,OAAhCjvB,EAAMnJ,EAAQxpN,KAAKqsN,eAAoB,EAASsG,EAAI9G,aAAe,GACnG,OAAIrC,EAAQkB,aAAeoB,GAAYiI,GAAa8tB,MAAenC,GAAUiC,IAAQlC,IACnFmC,MACOD,IAAQlC,KAEjBmC,IAAW,EACJ,IAAI5qM,QAAQr1C,MAAOw9C,IACxB,MAAMuuE,EAASv8F,GAAGo3E,eAAe/oG,EAAO,EAAa,MAAX2hP,SAAkB,EAASA,IAAQz/K,OAAO,GAAGO,OAASk/K,IAAQz/K,OAAO,GAAGO,MAAM,GAAK,GAAe,MAAXk/K,SAAkB,EAASA,IAAQz/K,OAAO,GAAGO,OAASk/K,IAAQz/K,OAAO,GAAGO,MAAM,GAAK,IAAI,GAClNisK,EAAiB,MAAXiT,SAAkB,EAASA,IAAQpsH,QAAQrH,GACjDzkC,SAAailJ,EAAItrL,QAAQ,GAC/B++L,IAAQlC,GAAOr6O,KAAKs3B,MAAM,IAAMusD,GAAO,IACvC44J,IAAanC,EACboC,IAAYp8L,KACZ35B,GAAG,CAAC2hG,EAAQwgH,IACZ/uL,EAAQwiM,IAAQlC,OAMpB,IA6DIwC,IA7DAC,IAAQ,GACRC,IAAY,CAAC,QAAS,QAAS,QAAS,SAAU,SAClDC,IAAa,CAAC,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,IAC5CC,IAAa,EACbC,IAAY,EACZC,IAAW9rL,OAAOy/C,iBACtBv0G,eAAe6gP,IAAOh5B,GACpB,IAAIkJ,EAOJ,OANIplM,GAAI2vB,UACNykM,IAAU,MACPA,IAEIl4B,EAAQznN,OACfnB,GAAI,gBAAiB8gP,IAAQ,aAF7BA,UAAgBvmB,IAAuC,OAA5BzI,EAAMlJ,EAAQxpN,KAAK44N,WAAgB,EAASlG,EAAIhgJ,WAGtEgvK,IAET//O,eAAe8gP,IAASjjP,EAAOgqN,EAASi2B,EAAKC,GAC3C,IAAIhtB,EAAKC,EACT,IAAK+uB,IACH,MAAO,CAAErqB,IAAK,EAAG0B,OAAQ,UAAWyO,YAAa,EAAGkb,KAAM,IAC5D,MAAM3uB,EAAYwuB,MAA0C,OAA5B7vB,EAAMlJ,EAAQxpN,KAAK44N,WAAgB,EAASlG,EAAI7G,aAAe,GACzFC,IAA0C,OAA5B6G,EAAMnJ,EAAQxpN,KAAK44N,WAAgB,EAASjG,EAAI7G,WAAa,GAAKpmK,KAAQ48L,IAC9F,OAAI94B,EAAQkB,aAAeoB,GAAYiI,GAAasuB,MAAe3C,GAAUwC,IAAMzC,IACjF8C,MACOL,IAAMzC,KAEf8C,IAAW,EACJ,IAAIvrM,QAAQr1C,MAAOw9C,IACxB,IAAIwgM,EAAKgD,EACT,KAAiB,MAAXjB,SAAkB,EAASA,IAAQhgL,OAAO,GAAGO,OACjD,OACF,MAAMv5B,EAAM,GACN7jC,EAAM,CAAC,CAAC,EAAG,GAAK,GAAK,KAC3B6jC,EAAIglF,OAASv8F,GAAGs3E,cAAcjpG,EAAOqF,EAAK,CAAC,GAAI,CAAC68O,IAAQhgL,OAAO,GAAGO,MAAM,GAAIy/K,IAAQhgL,OAAO,GAAGO,MAAM,KACpG,MAAMp4D,EAAM,CAAEwtN,IAAK,EAAG0B,OAAQ,UAAWyO,YAAa,EAAGkb,KAAM,KAC9B,OAA5B/C,EAAMn2B,EAAQxpN,KAAK44N,WAAgB,EAAS+mB,EAAI99O,YAClD6mC,EAAI2uL,IAAK3uL,EAAIqwL,OAAQrwL,EAAIg6M,MAAQhB,IAAQ3sH,QAAQrsF,EAAIglF,OAAQ,CAAC,aAAc,gBAAiB,iBAChG,MAAM+yH,QAAgB/3M,EAAIqwL,OAAOn2K,OACjC/4C,EAAIkvN,OAAS0nB,EAAQ,GAAKA,EAAQ,GAAK,OAAS,SAChD52O,EAAI29N,YAAcpiO,KAAKs3B,MAAM,KAAO+jN,EAAQ,GAAKA,EAAQ,GAAKA,EAAQ,GAAKA,EAAQ,KAAO,IAC1F,MAAMiC,QAAah6M,EAAIg6M,KAAK9/L,OAC5B,IAAK,IAAI/8C,EAAI,EAAGA,EAAI68O,EAAK58O,OAAQD,IAC3B68O,EAAK78O,KAAoC,OAA5B88O,EAAMn5B,EAAQxpN,KAAK44N,WAAgB,EAAS+pB,EAAI52B,gBAAkB,KACjFliN,EAAI64O,KAAK38O,KAAK,CAAEw6F,MAAOn7F,KAAKs3B,MAAM,IAAMgmN,EAAK78O,IAAM,IAAK68O,KAAMP,IAAUt8O,KAE5EgE,EAAI64O,KAAK/qL,KAAK,CAACrsB,EAAG+H,IAAMA,EAAEktD,MAAQj1D,EAAEi1D,OACpC,MAAMqiJ,EAAkBnrL,MAAMwB,WAAWvwB,EAAI2uL,IAAIz0K,QAC3CigM,EAAYD,EAAgBh9O,IAAI,CAAC0lC,EAAGzlC,IAAM,CAACu8O,IAAWv8O,GAAIylC,IAAIqsB,KAAK,CAACrsB,EAAG+H,IAAMA,EAAE,GAAK/H,EAAE,IAC5F,IAAIw3M,EAAOD,EAAU,GAAG,GACxB,IAAK,IAAIh9O,EAAI,EAAGA,EAAIg9O,EAAU/8O,OAAQD,IACpCi9O,GAAQD,EAAUh9O,GAAG,IAAMg9O,EAAUh9O,GAAG,GAAKi9O,GAC/Cj5O,EAAIwtN,IAAMjyN,KAAKs3B,MAAM,GAAKomN,GAAQ,GAClCp9O,OAAOo7D,KAAKp4B,GAAKlgC,QAASi6B,GAAW1W,GAAG2c,EAAIjG,KAC5Cy/M,IAAMzC,GAAO51O,EACbw4O,IAAa3C,EACb4C,IAAY58L,KACZvG,EAAQt1C,MAMZ,IA+CIk5O,IA/CAC,IAAQ,GACRC,IAAa,EACbC,IAAY,EACZC,IAAW1sL,OAAOy/C,iBACtBv0G,eAAeyhP,IAAO55B,GAOpB,OANIl8L,GAAI2vB,UACNglM,IAAU,MACPA,IAEIz4B,EAAQznN,OACfnB,GAAI,gBAAiBqhP,IAAQ,aAF7BA,UAAgB9mB,IAAU3R,EAAQxpN,KAAK,UAAUqjP,cAG5CpB,IAETtgP,eAAe2hP,IAAU9jP,EAAOgqN,EAASi2B,EAAKC,GAC5C,IAAIhtB,EAAKC,EAAKC,EAAKwI,EACnB,IAAK6mB,IACH,MAAO,CAAE5qB,IAAK,GAChB,MAAMtD,EAAYovB,MAA+C,OAAjCzwB,EAAMlJ,EAAQxpN,KAAK,gBAAqB,EAAS0yN,EAAI7G,aAAe,GAC9FC,IAA+C,OAAjC6G,EAAMnJ,EAAQxpN,KAAK,gBAAqB,EAAS2yN,EAAI7G,WAAa,GAAKpmK,KAAQw9L,IACnG,OAAI15B,EAAQkB,aAAeqJ,GAAajI,GAAYm3B,MAAevD,IAAiC,OAArB9sB,EAAMowB,IAAMvD,SAAgB,EAAS7sB,EAAIyE,OAA+B,OAArB+D,EAAM4nB,IAAMvD,SAAgB,EAASrkB,EAAI/D,KAAO,GAChL8rB,MACOH,IAAMvD,KAEf0D,IAAW,EACJ,IAAInsM,QAAQr1C,MAAOw9C,IACxB,IAAIwgM,EACJ,KAAiB,MAAXsC,SAAkB,EAASA,IAAQvgL,UAAYugL,IAAQvgL,OAAO,KAAOugL,IAAQvgL,OAAO,GAAGO,MAC3F,OACF,MAAMv5B,EAAM,GACZA,EAAIglF,OAASv8F,GAAGo3E,eAAe/oG,EAAO,CAACyiP,IAAQvgL,OAAO,GAAGO,MAAM,GAAIggL,IAAQvgL,OAAO,GAAGO,MAAM,KAAK,GAChGv5B,EAAI03M,QAAU3pN,GAAGiS,EAAIglF,OAAQivG,IAAUC,OACvC,MAAM/yN,EAAM,CAAEwtN,IAAK,GAGnB,IAFsC,OAAjCsoB,EAAMn2B,EAAQxpN,KAAK,gBAAqB,EAAS2/O,EAAI99O,WACxD6mC,EAAI2uL,IAAM4qB,IAAQltH,QAAQrsF,EAAI03M,UAC5B13M,EAAI2uL,IAAK,CACX,MAAMz0K,QAAala,EAAI2uL,IAAIz0K,OAC3B/4C,EAAIwtN,IAAMjyN,KAAK43E,MAAM,GAAKp6B,EAAK,IAAM,GAEvCl9C,OAAOo7D,KAAKp4B,GAAKlgC,QAASi6B,GAAW1W,GAAG2c,EAAIjG,KAC5CugN,IAAMvD,GAAO51O,EACbo5O,IAAavD,EACbwD,IAAYx9L,KACZvG,EAAQt1C,MAMZ,IAwDI05O,IAxDAC,IAAQ,GACRC,IAAa,EACbC,IAAa,EACbC,IAAYltL,OAAOy/C,iBACnB0tI,IAAO,CAAC,MAAQ,KAAO,MAC3BjiP,eAAekiP,IAAOr6B,GACpB,IAAIkJ,EAOJ,OANIplM,GAAI2vB,UACN8lM,IAAU,MACPA,IAEIv5B,EAAQznN,OACfnB,GAAI,gBAAiBmiP,IAAQ,aAF7BA,UAAgB5nB,IAA4C,OAAjCzI,EAAMlJ,EAAQxpN,KAAK,gBAAqB,EAAS0yN,EAAIoxB,iBAG3Ef,IAETphP,eAAeoiP,IAAUvkP,EAAOgqN,EAASi2B,EAAKC,GAC5C,IAAIhtB,EAAKC,EAAKC,EAAKwI,EACnB,IAAK2nB,IACH,MAAO,CAAEhqB,OAAQ,UAAWyO,YAAa,GAC3C,MAAMzT,EAAY4vB,MAAgD,OAAjCjxB,EAAMlJ,EAAQxpN,KAAK,gBAAqB,EAAS0yN,EAAI7G,aAAe,GAC/FC,IAA+C,OAAjC6G,EAAMnJ,EAAQxpN,KAAK,gBAAqB,EAAS2yN,EAAI7G,WAAa,GAAKpmK,KAAQg+L,IACnG,OAAIl6B,EAAQkB,aAAeqJ,GAAajI,GAAY23B,MAAe/D,IAAiC,OAArB9sB,EAAM4wB,IAAM/D,SAAgB,EAAS7sB,EAAImG,UAAkC,OAArBqC,EAAMooB,IAAM/D,SAAgB,EAASrkB,EAAIoM,aAAe,GAC3Lmc,MACOH,IAAM/D,KAEfkE,IAAY,EACL,IAAI3sM,QAAQr1C,MAAOw9C,IACxB,IAAIwgM,EACJ,KAAiB,MAAXoD,SAAkB,EAASA,IAAQrhL,OAAO,GAAGO,OACjD,OACF,MAAMv5B,EAAM,GACZA,EAAIglF,OAASv8F,GAAGo3E,eAAe/oG,EAAO,CAACujP,IAAQrhL,OAAO,GAAGO,MAAM,GAAI8gL,IAAQrhL,OAAO,GAAGO,MAAM,KAAK,GAChGv5B,EAAI03M,QAAUx8M,GAAG,KACf,MAAOogN,EAAKC,EAAOC,GAAQnjN,GAAG2H,EAAIglF,OAAQ,EAAG,GACvCy2H,EAAU1tN,GAAGutN,EAAKJ,IAAK,IACvBQ,EAAY3tN,GAAGwtN,EAAOL,IAAK,IAC3BS,EAAW5tN,GAAGytN,EAAMN,IAAK,IACzBhE,EAAYh7N,GAAG,CAACu/N,EAASC,EAAWC,IACpCC,EAAa7tN,GAAGuL,GAAG49M,EAAWjjB,IAAUI,MAAO,GACrD,OAAOunB,IAET,MAAMz6O,EAAM,CAAEkvN,OAAQ,UAAWyO,YAAa,IACR,OAAjCmY,EAAMn2B,EAAQxpN,KAAK,gBAAqB,EAAS2/O,EAAI99O,WACxD6mC,EAAIqwL,OAASgqB,IAAQhuH,QAAQrsF,EAAI03M,UACnC,MAAMx9L,QAAala,EAAIqwL,OAAOn2K,OAC9B/4C,EAAIkvN,OAASn2K,EAAK,GAAKA,EAAK,GAAK,SAAW,OAC5C/4C,EAAI29N,YAAc5kL,EAAK,GAAKA,EAAK,GAAKx9C,KAAK43E,MAAM,IAAMp6B,EAAK,IAAM,IAAMx9C,KAAK43E,MAAM,IAAMp6B,EAAK,IAAM,IACpGl9C,OAAOo7D,KAAKp4B,GAAKlgC,QAASi6B,GAAW1W,GAAG2c,EAAIjG,KAC5C+gN,IAAM/D,GAAO51O,EACb45O,IAAa/D,EACbgE,IAAah+L,KACbvG,EAAQt1C,MAMZ,IA2CI06O,IA3CAC,IAAQ,GACRC,IAAa,EACbC,IAAa,EACbC,IAAYluL,OAAOy/C,iBACvBv0G,eAAeijP,IAAOp7B,GACpB,IAAIkJ,EAOJ,OANIplM,GAAI2vB,UACNsmM,IAAU,MACPA,IAEI/5B,EAAQznN,OACfnB,GAAI,gBAAiB2iP,IAAQ,aAF7BA,UAAgBpoB,IAAmD,OAAxCzI,EAAMlJ,EAAQxpN,KAAK,uBAA4B,EAAS0yN,EAAIhgJ,WAGlF6wK,IAET5hP,eAAekjP,IAAU/9J,EAAO0iI,EAASi2B,EAAKC,GAC5C,IAAIhtB,EAAKC,EACT,KAAiB,MAAX4wB,SAAkB,EAASA,IAAQ,aACvC,MAAO,GACT,MAAMxvB,EAAY4wB,MAAuD,OAAxCjyB,EAAMlJ,EAAQxpN,KAAK,uBAA4B,EAAS0yN,EAAI7G,aAAe,GACtGC,IAAsD,OAAxC6G,EAAMnJ,EAAQxpN,KAAK,uBAA4B,EAAS2yN,EAAI7G,WAAa,GAAKpmK,KAAQg/L,IAC1G,OAAIl7B,EAAQkB,aAAeoB,GAAYiI,GAAa0wB,MAAe/E,GAAU8E,IAAM/E,IACjFkF,MACOH,IAAM/E,IAER,IAAIzoM,QAAQr1C,MAAOw9C,IACxB,IAAIwgM,EACJ,IAAI/8L,EAAO,GACX,IAA8C,OAAxC+8L,EAAMn2B,EAAQxpN,KAAK,uBAA4B,EAAS2/O,EAAI99O,WAAwB,MAAX0hP,SAAkB,EAASA,IAAQ7hL,OAAO,GAAGO,OAAQ,CAClI,MAAMv5B,EAAM,GACZA,EAAIwtL,KAAO/kM,GAAGo3E,eAAezhB,EAAO,CAACy8J,IAAQ7hL,OAAO,GAAGO,MAAM,GAAIshL,IAAQ7hL,OAAO,GAAGO,MAAM,KAAK,GAC9Fv5B,EAAIka,KAAO2gM,IAAQxuH,QAAQrsF,EAAIwtL,MAC/B,MAAMxnF,QAAehmG,EAAIka,KAAKA,OAC9BA,EAAO6U,MAAMwB,KAAKy1E,GAClBhpI,OAAOo7D,KAAKp4B,GAAKlgC,QAASi6B,GAAW1W,GAAG2c,EAAIjG,KAE9C+hN,IAAM/E,GAAO78L,EACb6hM,IAAa/E,EACbgF,IAAah/L,KACbvG,EAAQyD,KAMZ,IAAIkiM,IAAQ,GACRC,IAAa,EACbC,IAAa,EACbC,IAAYxuL,OAAOy/C,iBACvBv0G,eAAeujP,IAAO17B,GAOpB,OANIl8L,GAAI2vB,UACNsnM,IAAU,MACPA,IAEI/6B,EAAQznN,OACfnB,GAAI,gBAAiB2jP,IAAQ,aAF7BA,UAAgBppB,IAAU3R,EAAQxpN,KAAK,eAAe0yE,WAGjD6xK,IAET5iP,eAAewjP,IAAUr+J,EAAO0iI,EAASi2B,EAAKC,GAC5C,IAAIhtB,EAAKC,EACT,KAAiB,MAAX4xB,SAAkB,EAASA,IAAQ,aACvC,MAAO,GACT,MAAMxwB,EAAYkxB,MAAqD,OAAtCvyB,EAAMlJ,EAAQxpN,KAAK,qBAA0B,EAAS0yN,EAAI7G,aAAe,GACpGC,IAAoD,OAAtC6G,EAAMnJ,EAAQxpN,KAAK,qBAA0B,EAAS2yN,EAAI7G,WAAa,GAAKpmK,KAAQs/L,IACxG,OAAIx7B,EAAQkB,aAAeoB,GAAYiI,GAAagxB,MAAerF,GAAUoF,IAAMrF,IACjFwF,MACOH,IAAMrF,IAER,IAAIzoM,QAAQr1C,MAAOw9C,IACxB,IAAIwgM,EACJ,IAAI/8L,EAAO,GACX,IAA4C,OAAtC+8L,EAAMn2B,EAAQxpN,KAAK,qBAA0B,EAAS2/O,EAAI99O,WAAwB,MAAX0iP,SAAkB,EAASA,IAAQ7iL,OAAO,GAAGO,OAAQ,CAChI,MAAMv5B,EAAM,GACZA,EAAIwtL,KAAO/kM,GAAGo3E,eAAezhB,EAAO,CAACy9J,IAAQ7iL,OAAO,GAAGO,MAAM,GAAIsiL,IAAQ7iL,OAAO,GAAGO,MAAM,KAAK,GAC9Fv5B,EAAIka,KAAO2hM,IAAQxvH,QAAQrsF,EAAIwtL,MAC/B,MAAMxnF,QAAehmG,EAAIka,KAAKA,OAC9BA,EAAO6U,MAAMwB,KAAKy1E,GAClBhpI,OAAOo7D,KAAKp4B,GAAKlgC,QAASi6B,GAAW1W,GAAG2c,EAAIjG,KAE9CqiN,IAAMrF,GAAO78L,EACbmiM,IAAarF,EACbsF,IAAat/L,KACbvG,EAAQyD,KAKZ,IAAIwiM,IAAiBrN,IACnB,MAAM/4I,EAAU,CAAC2xI,EAAK0U,IAAQjgP,KAAKugB,MAAMgrN,EAAI,GAAK0U,EAAI,GAAI1U,EAAI,GAAK0U,EAAI,IACvE,IAAKtN,EAAM7P,YAAYhF,eAAiB6U,EAAM7P,YAAYtE,YACxD,MAAO,CAAEoE,QAAS,EAAGY,SAAU,GACjC,MAAM0c,EAAa,CAAC,GAAI,IAClBC,EAAW,EACX5oK,GAAQo7J,EAAM9rB,KAAK,IAAI,IAAM,IAAM8rB,EAAM9rB,KAAK,KAAK,IAAM,GACzDu5B,EAAa7oK,EAAOo7J,EAAM9rB,KAAK,KAAO8rB,EAAM9rB,KAAK,KACjDw5B,EAAY9oK,EAAO,EAAEo7J,EAAM9rB,KAAK,KAAK,GAAK8rB,EAAM9rB,KAAK,IAAI,IAAM,GAAI8rB,EAAM9rB,KAAK,KAAK,GAAK8rB,EAAM9rB,KAAK,IAAI,IAAM,GAAK,EAAE8rB,EAAM9rB,KAAK,KAAK,GAAK8rB,EAAM9rB,KAAK,KAAK,IAAM,GAAI8rB,EAAM9rB,KAAK,KAAK,GAAK8rB,EAAM9rB,KAAK,KAAK,IAAM,GAC9My5B,EAAU/oK,EAAO,CAACo7J,EAAM9rB,KAAK,KAAK,GAAK8rB,EAAM9rB,KAAK,IAAI,GAAI8rB,EAAM9rB,KAAK,IAAI,GAAK8rB,EAAM9rB,KAAK,IAAI,IAAM,CAAC8rB,EAAM9rB,KAAK,KAAK,GAAK8rB,EAAM9rB,KAAK,KAAK,GAAI8rB,EAAM9rB,KAAK,KAAK,GAAK8rB,EAAM9rB,KAAK,KAAK,IAClL05B,EAAU,EAEbF,EAAU,GAAKD,EAAW,IAAME,EAAQ,GAAKJ,EAAW,GACzDC,GAAYC,EAAW,GAAKC,EAAU,IAAMC,EAAQ,GAAKJ,EAAW,IAEtE,IAAI1c,EAAWxjO,KAAKK,KAAKkgP,EAAQ,GAAKA,EAAQ,GAAKA,EAAQ,GAAKA,EAAQ,IACxE/c,EAAWxjO,KAAKC,IAAIujO,EAAUmP,EAAMhK,OAAO,GAAK,EAAGgK,EAAMhK,OAAO,GAAK,GACrE,MAAM/F,GAAWhpI,EAAQ,CAAC,EAAG,GAAI2mJ,GAAWvgP,KAAKsC,GAAK,GAAKtC,KAAKsC,GAChE,MAAO,CAAEsgO,UAASY,aAEhBgd,IAAqB,CAAC7N,EAAO8N,KAC/B,MAAMvB,EAAc50B,IAClB,MAAM5pN,EAASV,KAAKK,KAAKiqN,EAAI,GAAKA,EAAI,GAAKA,EAAI,GAAKA,EAAI,GAAKA,EAAI,GAAKA,EAAI,IAI1E,OAHAA,EAAI,IAAM5pN,EACV4pN,EAAI,IAAM5pN,EACV4pN,EAAI,IAAM5pN,EACH4pN,GAEHo2B,EAAa,CAACx6M,EAAG+H,KACrB,MAAMzuC,EAAI0mC,EAAE,GAAK+H,EAAE,GACbm8K,EAAKlkL,EAAE,GAAK+H,EAAE,GACdrB,EAAI1G,EAAE,GAAK+H,EAAE,GACnB,MAAO,CAACzuC,EAAG4qN,EAAIx9K,IAEX+zM,EAAe,CAACz6M,EAAG+H,KACvB,MAAMzuC,EAAI0mC,EAAE,GAAK+H,EAAE,GAAK/H,EAAE,GAAK+H,EAAE,GAC3Bm8K,EAAKlkL,EAAE,GAAK+H,EAAE,GAAK/H,EAAE,GAAK+H,EAAE,GAC5BrB,EAAI1G,EAAE,GAAK+H,EAAE,GAAK/H,EAAE,GAAK+H,EAAE,GACjC,MAAO,CAACzuC,EAAG4qN,EAAIx9K,IAEXg0M,EAA8Bz9M,IAClC,MAAO09M,EAAKC,EAAMC,EAAMC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,GAAOl+M,EACxD,IAAIm+M,EACAC,EACAC,EAsBJ,OArBIR,EAAM,EACJA,GAAO,GACTQ,EAASxhP,KAAKigB,KAAK+gO,GACnBO,EAASvhP,KAAKugB,OAAO4gO,EAAKN,GAC1BS,EAASthP,KAAKugB,OAAO2gO,EAAKD,KAE1BO,GAAUxhP,KAAKsC,GAAK,EACpBi/O,GAAUvhP,KAAKugB,MAAM6gO,EAAKC,GAC1BC,EAAS,IAGXE,EAASxhP,KAAKsC,GAAK,EACnBi/O,EAASvhP,KAAKugB,MAAM6gO,EAAKC,GACzBC,EAAS,GAEPjwL,OAAO3kC,MAAM40N,KACfA,EAAS,GACPjwL,OAAO3kC,MAAM60N,KACfA,EAAS,GACPlwL,OAAO3kC,MAAM80N,KACfA,EAAS,GACJ,CAAE9e,MAAO,GAAK4e,EAAQ7e,IAAK,GAAK8e,EAAQ/e,KAAM,GAAKgf,IAEtD36B,EAAO8rB,EAAMuG,QACnB,IAAKryB,GAAQA,EAAKnmN,OAAS,IACzB,MAAO,CAAEi7N,MAAO,CAAE+G,MAAO,EAAGD,IAAK,EAAGD,KAAM,GAAKtY,OAAQ,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAIyY,KAAM,CAAEC,QAAS,EAAGY,SAAU,IACpH,MAAMlY,EAAQtrN,KAAKyvB,IAAIkjN,EAAMhK,OAAO,GAAK8X,EAAU,GAAI9N,EAAMhK,OAAO,GAAK8X,EAAU,IAAM,IACnFgB,EAAM,CAAC56B,EAAK,IAAKA,EAAK,KAAMA,EAAK,KAAMA,EAAK,MAAMrmN,IAAKi2C,GAAO,CAACA,EAAG,GAAKgqM,EAAU,GAAKn1B,EAAO70K,EAAG,GAAKgqM,EAAU,GAAKn1B,EAAO70K,EAAG,KAC9HirM,EAAQxC,EAAWwB,EAAWe,EAAI,GAAIA,EAAI,KAChD,IAAIE,EAAQzC,EAAWwB,EAAWe,EAAI,GAAIA,EAAI,KAC9C,MAAMG,EAAQ1C,EAAWyB,EAAagB,EAAOD,IAC7CC,EAAQhB,EAAae,EAAOE,GAC5B,MAAM13B,EAAS,CACby3B,EAAM,GACNA,EAAM,GACNA,EAAM,GACND,EAAM,GACNA,EAAM,GACNA,EAAM,GACNE,EAAM,GACNA,EAAM,GACNA,EAAM,IAEFjmB,EAAQilB,EAA2B12B,GACnCyY,EAAuB,MAAhB9b,EAAKnmN,OAAiBs/O,IAAcrN,GAAS,CAAE/P,QAAS,EAAGY,SAAU,GAClF,MAAO,CAAE7H,QAAOzR,SAAQyY,SAI1B,SAASkf,IAAwBlP,EAAO1zO,GACtC,MAAM6qC,EAAa,MAAT6oM,OAAgB,EAASA,EAAM7P,YACzC,KAAW,MAALh5L,OAAY,EAASA,EAAE00L,gBAAuB,MAAL10L,OAAY,EAASA,EAAEg0L,cACpE,OAAO,EACT,MAAMgkB,EAAW9hP,KAAKyvB,IAAIzvB,KAAKgf,IAAI8qB,EAAE00L,YAAY,GAAG,GAAK10L,EAAE00L,YAAY,GAAG,IAAKx+N,KAAKgf,IAAI8qB,EAAEg0L,aAAa,GAAG,GAAKh0L,EAAEg0L,aAAa,GAAG,KAAO7+N,EAClI8iP,EAAiB/hP,KAAKs3B,MAAM,KAAOwqN,GAAY,IACrD,OAAOC,EAIT,IAAIC,IAAazlP,MAAOq+C,EAAU8mC,KAChC,IAAI4rI,EAAKC,EAAKC,EAAKwI,EAAKn9N,EAAImpO,EAAKC,EAAKC,EAAKC,EAAKiW,EAAK/pM,EAAI4zM,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAK7zL,EAAI8zL,EAAKC,EAAKC,EAC/G,IACIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EATA5qB,EAAYl4K,KAUhB,MAAM+iM,EAAU,GAChBzoM,EAAS5O,MAAQ,WACjB,MAAMgtM,QAAcD,IAASr3J,EAAO9mC,EAASoqK,QAE7C,GADApqK,EAASnG,YAAY75C,KAAOstB,GAAI+8M,SAAWrqL,EAASnG,YAAY75C,MAAQ,GAAKoF,KAAK43E,MAAMt3B,KAAQk4K,GAAax4N,KAAK43E,MAAMt3B,KAAQk4K,IAC3H92I,EAAM7kB,OAAgC,IAAvB6kB,EAAM7kB,MAAMn8D,OAC9B,MAAO,GACT,IAAKs4O,EACH,MAAO,GACT,IAAK,IAAIv4O,EAAI,EAAGA,EAAIu4O,EAAMt4O,OAAQD,IAAK,CAErC,GADAm6C,EAAS0oM,QAAQ,aACZtK,EAAMv4O,GAAG48B,QAAU27M,EAAMv4O,GAAG48B,OAAO+gC,mBAAoB,CAC1D5iE,GAAI,2BAA4Bw9O,EAAMv4O,GAAG48B,QACzC,SAEF,GAA6C,OAAxCiwL,EAAM1yK,EAASoqK,OAAOpqN,KAAKgC,eAAoB,EAAS0wN,EAAIvwN,KAAM,CACrE,MAAMwmP,QAAexmP,IAAKi8O,EAAMv4O,IAChCkmB,GAAGqyN,EAAMv4O,GAAG48B,QACRkmN,IACFvK,EAAMv4O,GAAG48B,OAASkmN,GAEtB,MAAM1mP,EAAWm8O,EAAMv4O,GAAGomN,MAAQmyB,EAAMv4O,GAAGomN,KAAKnmN,OAAS,IAAM8/O,IAAmBxH,EAAMv4O,GAAI,CAACihF,EAAM7kB,MAAM,GAAI6kB,EAAM7kB,MAAM,KAAO,KAChIjiB,EAAS0oM,QAAQ,kBACb1oM,EAASoqK,OAAOzoN,MAClBwmP,GAAsD,OAAvCx1B,EAAM3yK,EAASoqK,OAAOpqN,KAAKsC,cAAmB,EAASqwN,EAAI9wN,SAAW29O,IAASpB,EAAMv4O,GAAG48B,QAAUC,GAAG,IAAKsd,EAASoqK,OAAQvkN,EAAGu4O,EAAMt4O,QAAU,IAE7Jk6C,EAAS5O,MAAQ,cACjBwsL,EAAYl4K,KACZyiM,GAAsD,OAAvCv1B,EAAM5yK,EAASoqK,OAAOpqN,KAAKsC,cAAmB,EAASswN,EAAI/wN,eAAiB29O,IAASpB,EAAMv4O,GAAG48B,QAAUC,GAAG,IAAKsd,EAASoqK,OAAQvkN,EAAGu4O,EAAMt4O,QAAU,GACnKk6C,EAASnG,YAAYv3C,QAAUgrB,GAAI+8M,SAAWrqL,EAASnG,YAAYv3C,SAAW,GAAK8C,KAAK43E,MAAMt3B,KAAQk4K,GAAax4N,KAAK43E,MAAMt3B,KAAQk4K,IAExI59K,EAAS0oM,QAAQ,gBACjB1oM,EAAS0oM,QAAQ,oBACb1oM,EAASoqK,OAAOzoN,MAClB2mP,GAA0D,OAAzCltB,EAAMp7K,EAASoqK,OAAOpqN,KAAKosN,gBAAqB,EAASgP,EAAIv5N,SAAW4/O,IAASrD,EAAMv4O,GAAG48B,QAAUC,GAAG,IAAKsd,EAASoqK,OAAQvkN,EAAGu4O,EAAMt4O,QAAU,GAEjKk6C,EAAS5O,MAAQ,gBACjBwsL,EAAYl4K,KACZ4iM,GAAyD,OAAxCrqP,EAAK+hD,EAASoqK,OAAOpqN,KAAKosN,gBAAqB,EAASnuN,EAAG4D,eAAiB4/O,IAASrD,EAAMv4O,GAAG48B,QAAUC,GAAG,IAAKsd,EAASoqK,OAAQvkN,EAAGu4O,EAAMt4O,QAAU,EACrKk6C,EAASnG,YAAYuyK,UAAY9+L,GAAI+8M,SAAWrqL,EAASnG,YAAYuyK,WAAa,GAAKhnN,KAAK43E,MAAMt3B,KAAQk4K,GAAax4N,KAAK43E,MAAMt3B,KAAQk4K,IAE5I59K,EAAS0oM,QAAQ,kBACjB1oM,EAAS0oM,QAAQ,mBACb1oM,EAASoqK,OAAOzoN,MAClB4mP,GAAwD,OAAxCnhB,EAAMpnL,EAASoqK,OAAOpqN,KAAKqsN,eAAoB,EAAS+a,EAAIvlO,SAAWmgP,IAAS5D,EAAMv4O,GAAG48B,QAAUC,GAAG,IAAKsd,EAASoqK,OAAQvkN,EAAGu4O,EAAMt4O,QAAU,GAE/Jk6C,EAAS5O,MAAQ,eACjBwsL,EAAYl4K,KACZ6iM,GAAwD,OAAxClhB,EAAMrnL,EAASoqK,OAAOpqN,KAAKqsN,eAAoB,EAASgb,EAAIxlO,eAAiBmgP,IAAS5D,EAAMv4O,GAAG48B,QAAUC,GAAG,IAAKsd,EAASoqK,OAAQvkN,EAAGu4O,EAAMt4O,QAAU,EACrKk6C,EAASnG,YAAYwyK,SAAW/+L,GAAI+8M,SAAWrqL,EAASnG,YAAYuyK,WAAa,GAAKhnN,KAAK43E,MAAMt3B,KAAQk4K,GAAax4N,KAAK43E,MAAMt3B,KAAQk4K,IAE3I59K,EAAS0oM,QAAQ,iBACjB1oM,EAAS0oM,QAAQ,eACb1oM,EAASoqK,OAAOzoN,MAClBsmP,GAAgD,OAApC3gB,EAAMtnL,EAASoqK,OAAOpqN,KAAK44N,WAAgB,EAAS0O,EAAIzlO,SAAW4gP,IAASrE,EAAMv4O,GAAG48B,QAAUC,GAAG,IAAKsd,EAASoqK,OAAQvkN,EAAGu4O,EAAMt4O,QAAU,MAEvJk6C,EAAS5O,MAAQ,WACjBwsL,EAAYl4K,KACZuiM,GAAgD,OAApC1gB,EAAMvnL,EAASoqK,OAAOpqN,KAAK44N,WAAgB,EAAS2O,EAAI1lO,eAAiB4gP,IAASrE,EAAMv4O,GAAG48B,QAAUC,GAAG,IAAKsd,EAASoqK,OAAQvkN,EAAGu4O,EAAMt4O,QAAU,KAC7Jk6C,EAASnG,YAAY++K,KAAOxzN,KAAK43E,MAAMt3B,KAAQk4K,IAEjD59K,EAAS0oM,QAAQ,aACjB1oM,EAAS0oM,QAAQ,iBACb1oM,EAASoqK,OAAOzoN,OAClBqmP,GAAoD,OAAzCxK,EAAMx9L,EAASoqK,OAAOpqN,KAAK,gBAAqB,EAASw9O,EAAI37O,SAAWyhP,IAAUlF,EAAMv4O,GAAG48B,QAAUC,GAAG,IAAKsd,EAASoqK,OAAQvkN,EAAGu4O,EAAMt4O,QAAU,KAC5JoiP,GAAsD,OAAxCz0M,EAAKuM,EAASoqK,OAAOpqN,KAAK,gBAAqB,EAASyzC,EAAG5xC,SAAWkiP,IAAU3F,EAAMv4O,GAAG48B,QAAUC,GAAG,IAAKsd,EAASoqK,OAAQvkN,EAAGu4O,EAAMt4O,QAAU,OAE7Jk6C,EAAS5O,MAAQ,aACjBwsL,EAAYl4K,KACZsiM,GAAoD,OAAzCX,EAAMrnM,EAASoqK,OAAOpqN,KAAK,gBAAqB,EAASqnP,EAAIxlP,eAAiByhP,IAAUlF,EAAMv4O,GAAG48B,QAAUC,GAAG,IAAKsd,EAASoqK,OAAQvkN,EAAGu4O,EAAMt4O,QAAU,KAClKoiP,GAAuD,OAAzCZ,EAAMtnM,EAASoqK,OAAOpqN,KAAK,gBAAqB,EAASsnP,EAAIzlP,eAAiBkiP,IAAU3F,EAAMv4O,GAAG48B,QAAUC,GAAG,IAAKsd,EAASoqK,OAAQvkN,EAAGu4O,EAAMt4O,QAAU,KACrKk6C,EAASnG,YAAY+uM,OAASxjP,KAAK43E,MAAMt3B,KAAQk4K,IAEnD59K,EAAS0oM,QAAQ,eACjB1oM,EAAS0oM,QAAQ,wBACb1oM,EAASoqK,OAAOzoN,MAClBymP,GAAqE,OAAhDb,EAAMvnM,EAASoqK,OAAOpqN,KAAK,uBAA4B,EAASunP,EAAI1lP,SAAWgjP,IAAUzG,EAAMv4O,GAAG48B,QAAUC,GAAG,IAAKsd,EAASoqK,OAAQvkN,EAAGu4O,EAAMt4O,QAAU,MAE7Kk6C,EAAS5O,MAAQ,oBACjBwsL,EAAYl4K,KACZ0iM,GAAqE,OAAhDZ,EAAMxnM,EAASoqK,OAAOpqN,KAAK,uBAA4B,EAASwnP,EAAI3lP,eAAiBgjP,IAAUzG,EAAMv4O,GAAG48B,QAAUC,GAAG,IAAKsd,EAASoqK,OAAQvkN,EAAGu4O,EAAMt4O,QAAU,KACnLk6C,EAASnG,YAAYigL,cAAgB10N,KAAK43E,MAAMt3B,KAAQk4K,IAE1D59K,EAAS0oM,QAAQ,sBACjB1oM,EAAS0oM,QAAQ,sBACb1oM,EAASoqK,OAAOzoN,MAClB0mP,GAAiE,OAA9CZ,EAAMznM,EAASoqK,OAAOpqN,KAAK,qBAA0B,EAASynP,EAAI5lP,SAAWsjP,IAAU/G,EAAMv4O,GAAG48B,QAAUC,GAAG,IAAKsd,EAASoqK,OAAQvkN,EAAGu4O,EAAMt4O,QAAU,MAEzKk6C,EAAS5O,MAAQ,oBACjBwsL,EAAYl4K,KACZ2iM,GAAiE,OAA9CX,EAAM1nM,EAASoqK,OAAOpqN,KAAK,qBAA0B,EAAS0nP,EAAI7lP,eAAiBsjP,IAAU/G,EAAMv4O,GAAG48B,QAAUC,GAAG,IAAKsd,EAASoqK,OAAQvkN,EAAGu4O,EAAMt4O,QAAU,KAC/Kk6C,EAASnG,YAAYigL,cAAgB10N,KAAK43E,MAAMt3B,KAAQk4K,IAE1D59K,EAAS0oM,QAAQ,oBACjB1oM,EAAS0oM,QAAQ,sBACb1oM,EAASoqK,OAAOzoN,MAClB6mP,EAAUnI,IAASjC,EAAMv4O,GAAG48B,QAAUC,GAAG,IAAKsd,EAASoqK,OAAQvkN,EAAGu4O,EAAMt4O,SAExEk6C,EAAS5O,MAAQ,kBACjBwsL,EAAYl4K,KACZ8iM,QAAgBnI,IAASjC,EAAMv4O,GAAG48B,QAAUC,GAAG,IAAKsd,EAASoqK,OAAQvkN,EAAGu4O,EAAMt4O,QAC9Ek6C,EAASnG,YAAYz3C,YAAckrB,GAAI+8M,SAAWrqL,EAASnG,YAAYz3C,aAAe,GAAKgD,KAAK43E,MAAMt3B,KAAQk4K,GAAax4N,KAAK43E,MAAMt3B,KAAQk4K,IAEhJ59K,EAAS0oM,QAAQ,oBACb1oM,EAASoqK,OAAOzoN,SACjBqmP,EAAQE,EAAWC,EAAYC,EAAkBC,EAAgBG,EAASP,EAASK,EAAcC,SAAqBvxM,QAAQnyB,IAAI,CAACmjO,EAAQE,EAAWC,EAAYC,EAAkBC,EAAgBG,EAASP,EAASK,EAAcC,KAEvOvoM,EAAS0oM,QAAQ,iBAC8B,OAAzCf,EAAM3nM,EAASoqK,OAAOpqN,KAAK,gBAAqB,EAAS2nP,EAAI9lP,UAAYmmP,GAAUE,IACvFM,EAAU,IACLA,EACHnxB,IAAK2wB,EAAO3wB,IACZ0B,OAAQmvB,EAAUnvB,OAClByO,YAAa0gB,EAAU1gB,eAGe,OAApCogB,EAAM5nM,EAASoqK,OAAOpqN,KAAK44N,WAAgB,EAASgvB,EAAI/lP,UAAYomP,IACxEO,EAAU,IACLA,EACHnxB,IAAK4wB,EAAQ5wB,IACb0B,OAAQkvB,EAAQlvB,OAChByO,YAAaygB,EAAQzgB,YACrBkb,KAAMuF,EAAQvF,QAGmC,OAA/C3uL,EAAK/T,EAASoqK,OAAOpqN,KAAK,uBAA4B,EAAS+zD,EAAGlyD,UAAYumP,IAClFI,EAAQlI,WAAa8H,IAE6B,OAA9CP,EAAM7nM,EAASoqK,OAAOpqN,KAAK,qBAA0B,EAAS6nP,EAAIhmP,UAAYwmP,IAClFG,EAAQlI,WAAa+H,GAEvB,MAAMnB,GAAiD,OAApCY,EAAM9nM,EAASoqK,OAAOpqN,KAAKqC,WAAgB,EAASylP,EAAIjmP,SAAWolP,IAAwB7I,EAAMv4O,GAAIihF,EAAM7kB,MAAM,IAAM,EACpIx/B,GAAmD,OAAxCslN,EAAM/nM,EAASoqK,OAAOpqN,KAAKgC,eAAoB,EAAS+lP,EAAI7lP,QAAUo/B,GAAG88M,EAAMv4O,GAAG48B,QAAU,KAC7G1W,GAAGqyN,EAAMv4O,GAAG48B,QACR27M,EAAMv4O,GAAG48B,eACJ27M,EAAMv4O,GAAG48B,OAClB,MAAMyrM,EAAM,IACPkQ,EAAMv4O,GACTw6B,GAAIx6B,GAEF2iP,EAAQnxB,MACV6W,EAAI7W,IAAMmxB,EAAQnxB,KAChBmxB,EAAQzvB,SACVmV,EAAInV,OAASyvB,EAAQzvB,QACnByvB,EAAQhhB,cACV0G,EAAI1G,YAAcghB,EAAQhhB,aACxBghB,EAAQlI,aACVpS,EAAI2a,UAAYL,EAAQlI,YACtBkI,EAAQ9F,OACVxU,EAAIwU,KAAO8F,EAAQ9F,MACjByF,IACFja,EAAI5rO,QAAU6lP,GACZG,IACFpa,EAAIxzM,KAAO4tN,GACTC,IACFra,EAAIxG,KAAO6gB,GACTrB,EAAW,IACbhZ,EAAIzG,SAAWyf,GACbjlP,IACFisO,EAAIjsO,SAAWA,GACbwgC,IACFyrM,EAAIzrM,OAASA,GACfgmN,EAAQ1iP,KAAKmoO,GACbluL,EAAS0oM,QAAQ,YAanB,OAXA1oM,EAAS0oM,QAAQ,iBACb1oM,EAASoqK,OAAOzoN,QACdq+C,EAASnG,YAAY75C,aAChBggD,EAASnG,YAAY75C,KAC1BggD,EAASnG,YAAYw9K,YAChBr3K,EAASnG,YAAYw9K,IAC1Br3K,EAASnG,YAAYk/K,eAChB/4K,EAASnG,YAAYk/K,OAC1B/4K,EAASnG,YAAYv3C,gBAChB09C,EAASnG,YAAYv3C,SAEzBmmP,GAILK,IAAS,CACXlf,MAAO,EACPnzJ,MAAO,EACPgzJ,OAAQ,EACRC,KAAM,EACNC,MAAO,EACP9kN,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,GAElBkkO,YAAa,CAAEC,EAAG,QAASC,EAAG,QAASC,EAAG,SAAUC,EAAG,OAAQC,EAAG,SAQlEC,cAAe,CACbL,EAAG,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IAChCC,EAAG,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IAChCC,EAAG,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,KACpCC,EAAG,CAAC,CAAC,EAAG,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,KACtCC,EAAG,CAAC,CAAC,EAAG,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,MAExCE,QAAUhrP,GAAUwqP,IAAOC,YAAYzqP,GACvCirP,UAAYjrP,GAAUwqP,IAAOO,cAAc/qP,IAEzCkrP,IAAa,CACfC,KAAM,EACNC,KAAM,EACNC,KAAM,EACNZ,YAAa,CAAEC,EAAG,OAAQC,EAAG,OAAQC,EAAG,QACxCI,QAAUhrP,GAAUkrP,IAAWT,YAAYzqP,IAEzCsrP,IAAkB,CACpBC,WAAY,EACZC,aAAc,EACdC,eAAgB,EAChBC,gBAAiB,EACjBC,gBAAiB,EACjBC,eAAgB,EAChBC,kBAAmB,EACnBC,iBAAkB,EAClBrB,YAAa,CAAEC,EAAG,aAAcC,EAAG,eAAgBC,EAAG,iBAAkBC,EAAG,kBAAmBC,EAAG,kBAAmBiB,EAAG,iBAAkBC,EAAG,oBAAqBC,EAAG,oBACpKjB,QAAUhrP,GAAUsrP,IAAgBb,YAAYzqP,IAE9CksP,IAAgB,MAClB,YAAYpsP,GACVkM,EAAc9M,KAAM,QACpB8M,EAAc9M,KAAM,SACpB8M,EAAc9M,KAAM,cACpB8M,EAAc9M,KAAM,WACpB8M,EAAc9M,KAAM,mBACpBA,KAAKY,KAAOA,EACZZ,KAAKitP,MAAQ,GACbjtP,KAAKktP,WAAa,GAClBltP,KAAKmzE,QAAU,CAAC,EAAG,EAAG,EAAG,EAAG,GAC5BnzE,KAAKmtP,gBAAkB,CAAC,EAAG,EAAG,EAAG,EAAG,GAEtC,KAAKzgB,EAAQ0gB,EAAM1W,GACiB,qBAAvB12O,KAAKitP,MAAMvgB,KACpB1sO,KAAKitP,MAAMvgB,GAAU,IACvB1sO,KAAKitP,MAAMvgB,GAAQnkO,KAAK,CAAC6kP,EAAM1W,IAEjC,UAAUhK,EAAQz3I,EAAUyhJ,GACrB12O,KAAKktP,WAAWxgB,KACnB1sO,KAAKktP,WAAWxgB,GAAU,IAC5B1sO,KAAKktP,WAAWxgB,GAAQnkO,KAAK,CAAC0sF,EAAUyhJ,IAE1C,OAAOhK,EAAQ2gB,GACbrtP,KAAKmzE,QAAQu5J,GAAU2gB,EACvB,MAAMC,EAAQttP,KAAKmzE,QAAQ7X,OAAO,CAACxtB,EAAG+H,IAAM/H,EAAI+H,EAAG,GACnD71C,KAAKmtP,gBAAkBntP,KAAKmzE,QAAQ/qE,IAAKwwN,GAAc,EAANA,EAAU00B,GAE7D,aAAaC,EAAeC,GAC1B,IAAI9W,EAAa,EACjB,IAAK,MAAM+W,KAAaF,EAAe,CACrC,MAAMG,EAAeH,EAAcE,GAC7BE,EAAgB3tP,KAAKitP,MAAMQ,GACjC,GAA6B,qBAAlBE,GAIX,IAAK,MAAOC,EAAc7qJ,KAAU4qJ,EAClC,GAAID,IAAiBE,EAAc,CACjClX,GAAc3zI,EAAQ/iG,KAAKmtP,gBAAgBM,GAC3C,YANF/W,GAAc12O,KAAKmtP,gBAAgBM,GAUvC,IAAK,MAAMA,KAAaD,EAAoB,CAC1C,MAAMK,EAAoBL,EAAmBC,GACvCK,EAAqB9tP,KAAKktP,WAAWO,GAC3C,GAAkC,qBAAvBK,GAIX,IAAK,MAAOC,EAAmBhrJ,KAAU+qJ,EACvC,GAAID,IAAsBE,EAAmB,CAC3CrX,GAAc3zI,EAAQ/iG,KAAKmtP,gBAAgBM,GAC3C,YANF/W,GAAc12O,KAAKmtP,gBAAgBM,GAUvC,OAAO/W,EAAa,MAKpB,MAAEtK,IAAK,MAAEnzJ,IAAK,OAAEgzJ,IAAM,KAAEC,IAAI,MAAEC,KAAUmf,KACxC,KAAEW,IAAI,KAAEC,IAAI,KAAEC,KAASH,KACvB,WAAEK,IAAU,aAAEC,IAAY,eAAEC,IAAc,gBAAEC,IAAe,gBAAEC,IAAe,eAAEC,IAAc,kBAAEC,IAAiB,iBAAEC,KAAqBR,IACtI4B,IAAW,IAAIhB,IAAc,aACjCgB,IAASZ,KAAKhhB,IAAO6f,IAAM,GAC3B+B,IAASxP,UAAUpS,IAAOigB,IAAY,GACtC2B,IAASxP,UAAUpS,IAAOsgB,IAAgB,KAC1CsB,IAASxP,UAAUpS,IAAOqgB,IAAiB,KAC3C,IAAK,MAAM/f,IAAU,CAAC4e,IAAOryK,MAAOqyK,IAAOrf,OAAQqf,IAAOpf,KAAMof,IAAOnf,OACrE6hB,IAASZ,KAAK1gB,EAAQyf,IAAM,GAC5B6B,IAASxP,UAAU9R,EAAQ6f,IAAgB,GAC3CyB,IAASxP,UAAU9R,EAAQ8f,IAAiB,GAE9C,IAAIyB,IAAU,IAAIjB,IAAc,WAChCiB,IAAQb,KAAKhhB,IAAO8f,IAAM,IAC1B+B,IAAQb,KAAKhhB,IAAO6f,IAAM,IAC1BgC,IAAQzP,UAAUpS,IAAOigB,IAAY,GACrC4B,IAAQzP,UAAUpS,IAAOsgB,IAAgB,GACzCuB,IAAQb,KAAKn0K,IAAOgzK,IAAM,GAC1BgC,IAAQzP,UAAUvlK,IAAOozK,IAAY,KACrC4B,IAAQzP,UAAUvlK,IAAOyzK,IAAgB,GACzCuB,IAAQb,KAAKnhB,IAAQggB,IAAM,GAC3BgC,IAAQzP,UAAUvS,IAAQogB,IAAY,GACtC4B,IAAQzP,UAAUvS,IAAQygB,IAAgB,KAC1CuB,IAAQb,KAAKlhB,IAAMigB,IAAM,GACzB8B,IAAQzP,UAAUtS,IAAMmgB,IAAY,IACpC4B,IAAQzP,UAAUtS,IAAMwgB,IAAgB,GACxCuB,IAAQzP,UAAUtS,IAAMqgB,IAAgB,IACxC0B,IAAQb,KAAKjhB,IAAOggB,IAAM,GAC1B8B,IAAQzP,UAAUrS,IAAOkgB,IAAY,IACrC4B,IAAQzP,UAAUrS,IAAOugB,IAAgB,GACzCuB,IAAQzP,UAAUrS,IAAOogB,IAAgB,IACzC0B,IAAQZ,OAAOp0K,IAAO,GACtBg1K,IAAQZ,OAAOphB,IAAQ,GACvB,IAAIiiB,IAAQ,IAAIlB,IAAc,SAC9BkB,IAAMd,KAAKhhB,IAAO+f,IAAM,GACxB+B,IAAMd,KAAKn0K,IAAOgzK,IAAM,IACxBiC,IAAMd,KAAKnhB,IAAQkgB,IAAM,IACzB+B,IAAMd,KAAKlhB,IAAMigB,IAAM,IACvB+B,IAAMd,KAAKjhB,IAAOggB,IAAM,IACxB+B,IAAMb,OAAOp0K,IAAO,GACpBi1K,IAAMb,OAAOphB,IAAQ,GACrB,IAAIkiB,IAAe,IAAInB,IAAc,iBACrCmB,IAAaf,KAAKhhB,IAAO6f,IAAM,GAC/BkC,IAAaf,KAAKn0K,IAAOkzK,IAAM,IAC/BgC,IAAaf,KAAKnhB,IAAQkgB,IAAM,IAChCgC,IAAaf,KAAKlhB,IAAMigB,IAAM,IAC9BgC,IAAaf,KAAKjhB,IAAOggB,IAAM,IAC/BgC,IAAad,OAAOp0K,IAAO,GAC3Bk1K,IAAad,OAAOphB,IAAQ,GAC5B,IAAImiB,IAAW,IAAIpB,IAAc,aACjCoB,IAAShB,KAAKhhB,IAAO6f,IAAM,KAC3BmC,IAAShB,KAAKn0K,IAAOgzK,IAAM,KAC3BmC,IAAShB,KAAKnhB,IAAQggB,IAAM,KAC5BmC,IAAShB,KAAKlhB,IAAM+f,IAAM,KAC1BmC,IAAShB,KAAKjhB,IAAO8f,IAAM,KAC3B,IAAIoC,IAAwB,CAACL,IAAUC,IAASC,IAAOC,IAAcC,KAGjE7/B,IAAgB,GAChB+/B,IAAW,CAEbC,sBAAuB,GACvBC,oBAAqB,IAErBC,oBAAqB,IACrBC,wBAAyB,GACzBC,uBAAwB,KAE1B,SAASC,IAAeC,EAASC,EAASC,EAASC,GACjD,MAAMluP,GAASguP,EAAUE,IAAYH,EAAUE,GAC/C,IAAIE,EAA2B,IAAnBrnP,KAAKqgB,KAAKnnB,GAAe8G,KAAKsC,GAK1C,OAJI+kP,GAAS,EACXA,GAASA,EACFA,EAAQ,IACfA,EAAQ,IAAMA,GACTA,EAET,SAASC,IAAU7X,EAAQC,GACzB,IAAKD,IAAWC,EACd,MAAO,CAAC,EAAG,GACb,MAAM6X,EAAUP,IAAevX,EAAO,GAAIA,EAAO,GAAIC,EAAO,GAAIA,EAAO,IACvE,GAAsB,IAAlBD,EAAO/uO,OACT,OAAO6mP,EACT,MAAMC,EAAUR,IAAevX,EAAO,GAAIA,EAAO,GAAIC,EAAO,GAAIA,EAAO,IACvE,MAAO,CAAC6X,EAASC,GAEnB,SAASC,IAAmB9rB,EAAO+rB,EAAc,GAC/C,IAAIC,EAAa,EACbC,EAAa,EACbC,EAAe,EAOnB,OANIlsB,GAAS,IAAMA,GAAS,IAC1BgsB,EAAa,EAAID,EACV/rB,GAAS,IAAMA,GAAS,IAC/BisB,EAAa,EAAIF,EAEjBG,EAAe,EAAIH,EACd,CAACC,EAAYC,EAAYC,GAElC,SAASC,IAAmBrZ,EAAYsZ,EAAUvZ,GAChD,MAAMwZ,EAAmBvZ,EAAW,GAAKsZ,EAAS,GAC5CE,EAAmBxZ,EAAW,GAAKD,EAAS,GAC5C0Z,EAAiBH,EAAS,GAAKvZ,EAAS,GACxC2Z,EAAmB1Z,EAAW,GAAKsZ,EAAS,GAC5CK,EAAmB3Z,EAAW,GAAKD,EAAS,GAC5C6Z,EAAiBN,EAAS,GAAKvZ,EAAS,GACxC8Z,EAAmB7Z,EAAW,GAAKsZ,EAAS,GAC5CQ,EAAmB9Z,EAAW,GAAKD,EAAS,GAC5Cga,EAAiBT,EAAS,GAAKvZ,EAAS,GACxCia,EAAiBzoP,KAAKK,KAAK2nP,EAAmBA,EAAmBG,EAAmBA,EAAmBG,EAAmBA,GAC1HI,EAAiB1oP,KAAKK,KAAK4nP,EAAmBA,EAAmBG,EAAmBA,EAAmBG,EAAmBA,GAC1HI,EAAe3oP,KAAKK,KAAK6nP,EAAiBA,EAAiBG,EAAiBA,EAAiBG,EAAiBA,GACpH,IAAII,GAAUD,EAAeA,EAAeF,EAAiBA,EAAiBC,EAAiBA,IAAmB,EAAIC,EAAeF,GACjIG,EAAS,EACXA,EAAS,EACFA,GAAU,IACjBA,GAAU,GACZ,IAEIC,EAFAC,EAAe9oP,KAAKkf,KAAK0pO,GAS7B,OARAE,EAAe,QAAUA,EAAe,IAGtCD,EADEC,EAAepC,IAASE,oBACbxC,IAAWC,KACjByE,EAAepC,IAASC,sBAClBvC,IAAWE,KAEXF,IAAWG,KACnBsE,EAET,SAASE,IAA4Bd,EAAkBD,EAAkBE,EAAgBc,GACvF,IAAIC,EAiBJ,OAdIA,EAFAD,IAAehpP,KAAKgf,IAAIipO,GACtBA,EAAmB,EACAzD,IAAgBG,eAEhBH,IAAgBI,gBAC9BoE,IAAehpP,KAAKgf,IAAIgpO,GAC7BA,EAAmB,EACAxD,IAAgBG,eAEhBH,IAAgBI,gBAEnCsD,EAAiB,EACE1D,IAAgBG,eAEhBH,IAAgBI,gBAElCqE,EAET,SAASC,IAA0Bd,EAAkBD,EAAkBE,EAAgBc,GACrF,IAAIF,EAiBJ,OAdIA,EAFAE,IAAenpP,KAAKgf,IAAIopO,GACtBA,EAAmB,EACA5D,IAAgBE,aAEhBF,IAAgBC,WAC9B0E,IAAenpP,KAAKgf,IAAImpO,GAC7BA,EAAmB,EACA3D,IAAgBE,aAEhBF,IAAgBC,WAEnC4D,EAAiB,EACE7D,IAAgBE,aAEhBF,IAAgBC,WAElCwE,EAET,SAASG,IAA0BhB,EAAkBD,EAAkBE,EAAgBc,EAAYlB,EAAkBD,EAAkBE,EAAgBc,GACrJ,IAAIC,EACJ,MAAMI,EAA0BH,IAA0Bd,EAAkBD,EAAkBE,EAAgBc,GACxGG,EAA4BP,IAA4Bd,EAAkBD,EAAkBE,EAAgBc,GAYlH,OATIC,EAFAI,IAA4B7E,IAAgBC,WAC1C6E,IAA8B9E,IAAgBG,eAC3BH,IAAgBM,eAEhBN,IAAgBK,gBAEnCyE,IAA8B9E,IAAgBG,eAC3BH,IAAgBQ,iBAEhBR,IAAgBO,kBAElCkE,EAET,SAASM,IAAyB9a,EAAYsZ,EAAUvZ,EAAUgb,GAChE,MAAMxB,EAAmBvZ,EAAW,GAAKsZ,EAAS,GAC5CE,EAAmBxZ,EAAW,GAAKD,EAAS,GAC5C0Z,EAAiBH,EAAS,GAAKvZ,EAAS,GACxC2Z,EAAmB1Z,EAAW,GAAKsZ,EAAS,GAC5CK,EAAmB3Z,EAAW,GAAKD,EAAS,GAC5C6Z,EAAiBN,EAAS,GAAKvZ,EAAS,GACxCwa,EAAahpP,KAAKyvB,IAAIzvB,KAAKgf,IAAIgpO,GAAmBhoP,KAAKgf,IAAIipO,GAAmBjoP,KAAKgf,IAAIkpO,IACvFiB,EAAanpP,KAAKyvB,IAAIzvB,KAAKgf,IAAImpO,GAAmBnoP,KAAKgf,IAAIopO,GAAmBpoP,KAAKgf,IAAIqpO,IAC7F,IAAIoB,EAAe,EACfC,EAAe,EACfC,EAAiB,EACrB,MAAMC,EAA2BT,GAAcH,EAAa,MACxDY,EAA2B,IAC7BH,GAAgB/C,IAASG,oBAClB+C,EAA2B,IAClCF,GAAgBhD,IAASG,oBAEzB8C,GAAkBjD,IAASG,oBAC7B,MAAM4B,EAAiBzoP,KAAKK,KAAK2nP,EAAmBA,EAAmBG,EAAmBA,GACpFO,EAAiB1oP,KAAKK,KAAK4nP,EAAmBA,EAAmBG,EAAmBA,GACpFO,EAAe3oP,KAAKK,KAAK6nP,EAAiBA,EAAiBG,EAAiBA,GAC5EwB,EAAW7pP,KAAKyvB,IAAIg5N,EAAgBC,EAAgBC,GAC1D,IAAImB,EAAqBrb,EAAW,GAChCsb,EAAqBtb,EAAW,GAChCub,EAAmBxb,EAAS,GAC5Byb,EAAmBzb,EAAS,GAC5Bqb,IAAapB,GACfuB,EAAmBxb,EAAS,GAC5Byb,EAAmBzb,EAAS,IACnBqb,IAAalB,IACtBmB,EAAqB/B,EAAS,GAC9BgC,EAAqBhC,EAAS,IAEhC,MAAMmC,EAAiB,CAACJ,EAAoBC,GACtCI,EAAe,CAACH,EAAkBC,GAClCG,EAAa9C,IAAU4C,EAAgBC,GACvCE,EAAQ5C,IAAmB2C,EAAY1D,IAASK,wBACtD0C,GAAgBY,EAAM,GACtBX,GAAgBW,EAAM,GACtBV,GAAkBU,EAAM,GACxB,IAAK,MAAMC,KAAed,EAAc,CACtC,MAAMe,EAAc9C,IAAmB6C,EAAa5D,IAASI,yBAC7D2C,GAAgBc,EAAY,GAC5Bb,GAAgBa,EAAY,GAC5BZ,GAAkBY,EAAY,GAEhC,IAAItB,EAQJ,OANEA,EADEQ,IAAiBzpP,KAAKyvB,IAAIg6N,EAAcC,EAAcC,GACnCT,IAA0Bd,EAAkBD,EAAkBE,EAAgBc,GAC1FQ,IAAmB3pP,KAAKyvB,IAAIi6N,EAAcC,GAC9BZ,IAA4Bd,EAAkBD,EAAkBE,EAAgBc,GAEhFI,IAA0BhB,EAAkBD,EAAkBE,EAAgBc,EAAYlB,EAAkBD,EAAkBE,EAAgBc,GAE9JC,EAET,SAASuB,IAAStjC,GAChB,MAAMujC,EAAW,GACXC,EAAW,GACXC,EAAc,GACdC,EAAmB,GACzB,IAAK1jC,EACH,MAAO,CAAEm+B,MAAOsF,EAAarF,WAAYsF,GAC3C,IAAK,MAAM9lB,KAAU4e,IAAOjkO,IAAK,CAC/B,MAAM27M,EAASsoB,IAAOS,UAAUrf,GAC1B+lB,EAAY,GACZC,EAAY,GAClB,IAAK,MAAMpb,KAAUtU,EAAQ,CAC3B,MAAMqU,EAASvoB,EAAUwoB,EAAO,IAC1Bqb,EAAU7jC,EAAUwoB,EAAO,IAC3Bsb,EAAS1D,IAAU7X,EAAQsb,GAC3BxD,EAAUyD,EAAO,GACjBxD,EAAUwD,EAAO,GACvBH,EAAUlqP,KAAK4mP,GACfuD,EAAUnqP,KAAK6mP,GAEjBiD,EAAS9pP,KAAKkqP,GACdH,EAAS/pP,KAAKmqP,GAEhB,IAAK,MAAMhmB,KAAU4e,IAAOjkO,IAAK,CAC/B,MAAMwrO,EAAenmB,IAAW4e,IAAOlf,MAAQ,EAAI,EAC7C0mB,EAAiBxH,IAAOS,UAAUrf,GAClC2J,EAAavnB,EAAUgkC,EAAeD,GAAc,IACpDlD,EAAW7gC,EAAUgkC,EAAeD,EAAe,GAAG,IACtDzc,EAAWtnB,EAAUgkC,EAAe,GAAG,IACvCC,EAAerD,IAAmBrZ,EAAYsZ,EAAUvZ,GACxD4c,EAAiB7B,IAAyB9a,EAAYsZ,EAAUvZ,EAAUic,EAAS3lB,GAAQ5qM,MAAM+wN,IACvGN,EAAY7lB,GAAUqmB,EACtBP,EAAiB9lB,GAAUsmB,EAE7B,MAAO,CAAE/F,MAAOsF,EAAarF,WAAYsF,GAE3C,SAAStH,IAAQrf,GACf,IAAKA,GAAkC,IAArBA,EAAUvjO,OAC1B,OAAO,KACT,MAAM2qP,EAAeb,IAASvmB,GACxB/c,EAAY,GAClB,IAAK,MAAM2+B,KAAanC,IAAOjkO,IAC7BynM,EAAUw8B,IAAOQ,QAAQ2B,IAAc,CACrCL,KAAMpB,IAAWF,QAAQmH,EAAahG,MAAMQ,IAC5CjP,UAAW4N,IAAgBN,QAAQmH,EAAa/F,WAAWO,KAG/D,OAAO3+B,EAET,SAAS36G,IAAM03H,GACb,MAAMqnB,EAAQ,GACd,IAAKrnB,GAAkC,IAArBA,EAAUvjO,OAC1B,OAAO4qP,EACT,MAAMD,EAAeb,IAASvmB,GAC9B,IAAK,MAAMsnB,KAAY9E,IAAuB,CAC5C,MAAM3X,EAAayc,EAASC,aAAaH,EAAahG,MAAOgG,EAAa/F,YACtExW,GAAcnoB,KAChB2kC,EAAM3qP,KAAK,CAAE3H,KAAMuyP,EAASvyP,KAAM81O,eAEtC,OAAOwc,EAIT,IAAIG,IAAS3iB,IACX,IAAKA,EACH,MAAO,GACT,MAAM3tO,EAAW,GACjB,IAAK,IAAIsF,EAAI,EAAGA,EAAIqoO,EAAIpoO,OAAQD,IAAK,CACnC,MAAM4pO,EAAYvB,EAAIroO,GAAGwjO,UAAUrkH,KAAM15E,GAAiB,cAAXA,EAAEg+L,MAC3CsG,EAAa1B,EAAIroO,GAAGwjO,UAAUrkH,KAAM15E,GAAiB,eAAXA,EAAEg+L,MAC5C5E,EAAOwJ,EAAIroO,GAAGwjO,UAAUrkH,KAAM15E,GAAiB,SAAXA,EAAEg+L,MACxC5E,GAAQ+K,GAAaG,GAAcH,EAAUh9I,SAAS,GAAKiyI,EAAKjyI,SAAS,IAAMm9I,EAAWn9I,SAAS,GAAKiyI,EAAKjyI,SAAS,GACxHlyF,EAASwF,KAAK,CAAExD,KAAMsD,EAAGnD,QAAS,cAC3BgiO,GAAQ+K,GAAaA,EAAUh9I,SAAS,GAAKiyI,EAAKjyI,SAAS,GAClElyF,EAASwF,KAAK,CAAExD,KAAMsD,EAAGnD,QAAS,oBAC3BgiO,GAAQkL,GAAcA,EAAWn9I,SAAS,GAAKiyI,EAAKjyI,SAAS,IACpElyF,EAASwF,KAAK,CAAExD,KAAMsD,EAAGnD,QAAS,qBACpC,MAAMouP,EAAe5iB,EAAIroO,GAAGwjO,UAAUrkH,KAAM15E,GAAiB,iBAAXA,EAAEg+L,MAC9CynB,EAAgB7iB,EAAIroO,GAAGwjO,UAAUrkH,KAAM15E,GAAiB,kBAAXA,EAAEg+L,MACjDwnB,GAAgBC,GAAiB3rP,KAAKgf,IAAI0sO,EAAaxhB,YAAY,GAAKyhB,EAAczhB,YAAY,IAAM,IAC1G/uO,EAASwF,KAAK,CAAExD,KAAMsD,EAAGnD,QAAS,YAAWouP,EAAar+J,SAAS,GAAKs+J,EAAct+J,SAAS,GAAK,OAAS,WAGjH,OAAOlyF,GAELywP,IAAS9iB,IACX,IAAKA,EACH,MAAO,GACT,MAAM3tO,EAAW,GACjB,IAAK,IAAIsF,EAAI,EAAGA,EAAIqoO,EAAIpoO,OAAQD,IAC9B,GAAIqoO,EAAIroO,GAAGomN,MAAQiiB,EAAIroO,GAAGomN,KAAKnmN,OAAS,IAAK,CAC3C,MAAMmrP,GAAS/iB,EAAIroO,GAAGomN,KAAK,IAAI,IAAM,IAAMiiB,EAAIroO,GAAGomN,KAAK,KAAK,IAAM,GAC5DilC,EAAQhjB,EAAIroO,GAAGomN,KAAK,IAAI,GAAKiiB,EAAIroO,GAAGomN,KAAK,KAAK,GAChD7mN,KAAKgf,IAAI6sO,EAAQC,IAAU,IAC7B3wP,EAASwF,KAAK,CAAE/F,KAAM6F,EAAGnD,QAAS,kBAElCnC,EAASwF,KAAK,CAAE/F,KAAM6F,EAAGnD,QAAS,WAAUuuP,EAAQ,EAAI,OAAS,WACnE,MAAME,EAAW/rP,KAAKgf,IAAI8pN,EAAIroO,GAAGomN,KAAK,KAAK,GAAKiiB,EAAIroO,GAAGomN,KAAK,KAAK,IAAM7mN,KAAKgf,IAAI8pN,EAAIroO,GAAGomN,KAAK,KAAK,GAAKiiB,EAAIroO,GAAGomN,KAAK,KAAK,IACnHklC,EAAW,IACb5wP,EAASwF,KAAK,CAAE/F,KAAM6F,EAAGnD,QAAS,mBACpC,MAAM0uP,EAAYhsP,KAAKgf,IAAI8pN,EAAIroO,GAAGomN,KAAK,KAAK,GAAKiiB,EAAIroO,GAAGomN,KAAK,KAAK,IAAM7mN,KAAKgf,IAAI8pN,EAAIroO,GAAGomN,KAAK,KAAK,GAAKiiB,EAAIroO,GAAGomN,KAAK,KAAK,IACpHmlC,EAAY,IACd7wP,EAASwF,KAAK,CAAE/F,KAAM6F,EAAGnD,QAAS,oBACpC,MAAM2uP,EAAYjsP,KAAKC,IAAI,IAAK,IAAMD,KAAKgf,IAAI8pN,EAAIroO,GAAGomN,KAAK,IAAI,GAAKiiB,EAAIroO,GAAGomN,KAAK,IAAI,IAAM7mN,KAAKgf,IAAI8pN,EAAIroO,GAAGomN,KAAK,IAAI,GAAKiiB,EAAIroO,GAAGomN,KAAK,KAAK,KACrIolC,EAAY,IACd9wP,EAASwF,KAAK,CAAE/F,KAAM6F,EAAGnD,QAAS,SAAS0C,KAAK43E,MAAMq0K,aACxD,MAAMC,EAAYpjB,EAAIroO,GAAGomN,KAAK,KAAK,IAAM,EACrC7mN,KAAKgf,IAAIktO,GAAa,IACxB/wP,EAASwF,KAAK,CAAE/F,KAAM6F,EAAGnD,QAAS,SAAQ4uP,EAAY,EAAI,KAAO,UAGvE,OAAO/wP,GAELgxP,IAASrjB,IACX,IAAIxb,EAAKC,EAAKC,EAAKwI,EACnB,IAAK8S,EACH,MAAO,GACT,MAAM3tO,EAAW,GACjB,IAAK,IAAIsF,EAAI,EAAGA,EAAIqoO,EAAIpoO,OAAQD,IAAK,CACnC,KAA+E,OAAxE8sN,EAAoC,OAA7BD,EAAMwb,EAAIroO,GAAGqiO,kBAAuB,EAASxV,EAAIkR,kBAAuB,EAASjR,EAAI,OAAmF,OAAzEyI,EAAoC,OAA7BxI,EAAMsb,EAAIroO,GAAGqiO,kBAAuB,EAAStV,EAAIsQ,mBAAwB,EAAS9H,EAAI,IACxM,SACF,MAAMo2B,EAAYtjB,EAAIroO,GAAGqiO,YAAYtE,YAAY,GAAG,GAAKsK,EAAIroO,GAAGqiO,YAAYtE,YAAY,GAAG,GACrF6tB,EAAYvjB,EAAIroO,GAAGqiO,YAAYtE,YAAY,GAAG,GAAKsK,EAAIroO,GAAGqiO,YAAYtE,YAAY,GAAG,GACrF8tB,EAAWtsP,KAAKgf,IAAIotO,EAAYC,GAChCE,EAAazjB,EAAIroO,GAAGqiO,YAAYhF,aAAa,GAAG,GAAKgL,EAAIroO,GAAGqiO,YAAYhF,aAAa,GAAG,GACxF0uB,EAAa1jB,EAAIroO,GAAGqiO,YAAYhF,aAAa,GAAG,GAAKgL,EAAIroO,GAAGqiO,YAAYhF,aAAa,GAAG,GACxF2uB,EAAYzsP,KAAKgf,IAAIutO,EAAaC,GACxC,IAAI1yJ,GAAS,EACb,MAAM4yJ,EAAa1sP,KAAKgf,IAAIstO,EAAWG,GAAazsP,KAAKyvB,IAAI68N,EAAUG,GACnEC,EAAa,MACf5yJ,GAAS,EACT3+F,EAASwF,KAAK,CAAE1D,KAAMwD,EAAGnD,QAAS,mBAEpC,MAAMqvP,EAAkB3sP,KAAKgf,IAAI8pN,EAAIroO,GAAGomN,KAAK,KAAK,GAAKiiB,EAAIroO,GAAGqiO,YAAYtE,YAAY,GAAG,IAAMsK,EAAIroO,GAAGhB,IAAI,GACpGmtP,EAAmB5sP,KAAKgf,IAAI8pN,EAAIroO,GAAGomN,KAAK,IAAI,GAAKiiB,EAAIroO,GAAGqiO,YAAYhF,aAAa,GAAG,IAAMgL,EAAIroO,GAAGhB,IAAI,IACvGktP,EAAkB,KAAQC,EAAmB,OAC/C9yJ,GAAS,GACP6yJ,EAAkBC,EAChBD,EAAkB,KACpBxxP,EAASwF,KAAK,CAAE1D,KAAMwD,EAAGnD,QAAS,kBAEhCsvP,EAAmB,KACrBzxP,EAASwF,KAAK,CAAE1D,KAAMwD,EAAGnD,QAAS,iBAEtC,MAAMuvP,EAAmB7sP,KAAKgf,IAAI8pN,EAAIroO,GAAGomN,KAAK,KAAK,GAAKiiB,EAAIroO,GAAGqiO,YAAYhF,aAAa,GAAG,IAAMgL,EAAIroO,GAAGhB,IAAI,GACtGqtP,EAAkB9sP,KAAKgf,IAAI8pN,EAAIroO,GAAGomN,KAAK,KAAK,GAAKiiB,EAAIroO,GAAGqiO,YAAYtE,YAAY,GAAG,IAAMsK,EAAIroO,GAAGhB,IAAI,IACtGqtP,EAAkB,KAAQD,EAAmB,KAAQC,EAAkB,MAASD,EAAmB,QACrG/yJ,GAAS,IACPgzJ,EAAkB,KAAQD,EAAmB,MAC/C1xP,EAASwF,KAAK,CAAE1D,KAAMwD,EAAGnD,QAAS,kBAChCwvP,EAAkB,MAASD,EAAmB,OAChD1xP,EAASwF,KAAK,CAAE1D,KAAMwD,EAAGnD,QAAS,eAChCw8F,GACF3+F,EAASwF,KAAK,CAAE1D,KAAMwD,EAAGnD,QAAS,mBAEtC,OAAOnC,GAEL4xP,IAASjkB,IACX,IAAKA,EACH,MAAO,GACT,MAAM3tO,EAAW,GACjB,IAAK,IAAIsF,EAAI,EAAGA,EAAIqoO,EAAIpoO,OAAQD,IAAK,CACnC,MAAMusP,EAAU,GAChB,GAAIlkB,EAAIroO,GAAGqiO,YACT,IAAK,MAAOgC,EAAQmoB,KAAQ3sP,OAAO+1D,QAAQyyK,EAAIroO,GAAGqiO,aACjC,aAAXgC,GAAyBzyK,MAAMC,QAAQ26L,IAAQA,EAAI,IACrDD,EAAQrsP,KAAK,CAAE3H,KAAM8rO,EAAOtvK,cAAe63B,SAAU4/J,EAAI,KAG/D,GAAID,GAAWA,EAAQtsP,OAAS,EAAG,CACjC,MAAMwsP,EAAUF,EAAQt5L,OAAO,CAACy5L,EAAMjnN,KAAOinN,EAAK9/J,SAAS,IAAM,IAAMnnD,EAAEmnD,SAAS,IAAM,GAAK8/J,EAAOjnN,GACpG/qC,EAASwF,KAAK,CAAEvD,KAAMqD,EAAGnD,QAAY4vP,EAAQl0P,KAAX,aAClC,MAAMo0P,EAAUJ,EAAQt5L,OAAO,CAACy5L,EAAMjnN,IAAMinN,EAAK9/J,SAAS,GAAKnnD,EAAEmnD,SAAS,GAAK8/J,EAAOjnN,GACtF/qC,EAASwF,KAAK,CAAEvD,KAAMqD,EAAGnD,QAAY8vP,EAAQp0P,KAAX,QAEpC,GAAI8vO,EAAIroO,GAAGwjO,UAAW,CACpB,MAAMqnB,EAAQ/+I,IAAMu8H,EAAIroO,GAAGwjO,WAC3B,IAAK,MAAMopB,KAAQ/B,EACjBnwP,EAASwF,KAAK,CAAEvD,KAAMqD,EAAGnD,QAAS+vP,EAAKr0P,QAG7C,OAAOmC,GAIT,SAASmyP,IAAY7tP,GACnB,MAAO,CACLO,KAAKgf,IAAIvf,EAAI+uO,SAAS,GAAK/uO,EAAIgvO,WAAW,IAC1CzuO,KAAKgf,IAAIvf,EAAI+uO,SAAS,GAAK/uO,EAAIgvO,WAAW,KAG9C,SAAS8e,IAAc9tP,GACrB,MAAO,CACLA,EAAIgvO,WAAW,IAAMhvO,EAAI+uO,SAAS,GAAK/uO,EAAIgvO,WAAW,IAAM,EAC5DhvO,EAAIgvO,WAAW,IAAMhvO,EAAI+uO,SAAS,GAAK/uO,EAAIgvO,WAAW,IAAM,GAGhE,SAAS+e,IAAyB/tP,EAAKrF,EAAO8+F,GAC5C,MAAMt5F,EAAIxF,EAAMyiE,MAAM,GAChBl9D,EAAIvF,EAAMyiE,MAAM,GAChBi8B,EAAQ,CAAC,CACbr5F,EAAIgvO,WAAW,GAAK7uO,EACpBH,EAAIgvO,WAAW,GAAK9uO,EACpBF,EAAI+uO,SAAS,GAAK5uO,EAClBH,EAAI+uO,SAAS,GAAK7uO,IAEpB,OAAOosB,GAAGs3E,cAAcjpG,EAAO0+F,EAAO,CAAC,GAAII,GAE7C,SAASu0J,IAAqBhuP,EAAKusN,GACjC,MAAMyiB,EAAa,CAAChvO,EAAIgvO,WAAW,GAAKziB,EAAO,GAAIvsN,EAAIgvO,WAAW,GAAKziB,EAAO,IACxEwiB,EAAW,CAAC/uO,EAAI+uO,SAAS,GAAKxiB,EAAO,GAAIvsN,EAAI+uO,SAAS,GAAKxiB,EAAO,IAClE0hC,EAAgBjuP,EAAIiuP,cAAcltP,IAAK0xO,IAC3C,MAAMyb,EAAc,CAACzb,EAAM,GAAKlmB,EAAO,GAAIkmB,EAAM,GAAKlmB,EAAO,IAC7D,OAAO2hC,IAET,MAAO,CAAElf,aAAYD,WAAUkf,gBAAe5e,WAAYrvO,EAAIqvO,YAEhE,SAAS8e,IAAYnuP,EAAKusN,EAAS,KACjC,MAAMlyH,EAASyzJ,IAAc9tP,GACvB6rN,EAAQgiC,IAAY7tP,GACpBouP,EAAc,CAAC7hC,EAASV,EAAM,GAAK,EAAGU,EAASV,EAAM,GAAK,GAC1DmjB,EAAa,CAAC30I,EAAO,GAAK+zJ,EAAY,GAAI/zJ,EAAO,GAAK+zJ,EAAY,IAClErf,EAAW,CAAC10I,EAAO,GAAK+zJ,EAAY,GAAI/zJ,EAAO,GAAK+zJ,EAAY,IACtE,MAAO,CAAEpf,aAAYD,WAAUkf,cAAejuP,EAAIiuP,eAEpD,SAASI,IAAaruP,GACpB,MAAM2vO,EAAUme,IAAc9tP,GACxB6rN,EAAQgiC,IAAY7tP,GACpBsuP,EAAU/tP,KAAKyvB,OAAO67L,GACtB4jB,EAAW6e,EAAU,EACrBtf,EAAa,CAACW,EAAQ,GAAKF,EAAUE,EAAQ,GAAKF,GAClDV,EAAW,CAACY,EAAQ,GAAKF,EAAUE,EAAQ,GAAKF,GACtD,MAAO,CAAET,aAAYD,WAAUkf,cAAejuP,EAAIiuP,eAEpD,SAASM,IAAkBryB,GACzB,OAAOA,EAAQ,EAAI37N,KAAKsC,GAAKtC,KAAKypB,OAAOkyM,EAAQ37N,KAAKsC,KAAO,EAAItC,KAAKsC,KAExE,SAAS2rP,IAAiBxe,EAAQC,GAChC,MAAM91I,EAAU55F,KAAKsC,GAAK,EAAItC,KAAKugB,QAAQmvN,EAAO,GAAKD,EAAO,IAAKC,EAAO,GAAKD,EAAO,IACtF,OAAOue,IAAkBp0J,GAE3B,IAAIs0J,IAA0B,CAAC1uP,EAAG4qN,IAAO,CAAC,CAAC,EAAG,EAAG5qN,GAAI,CAAC,EAAG,EAAG4qN,GAAK,CAAC,EAAG,EAAG,IACxE,SAAS+jC,IAAKve,EAAKC,GACjB,IAAI9oK,EAAU,EACd,IAAK,IAAItmE,EAAI,EAAGA,EAAImvO,EAAIlvO,OAAQD,IAC9BsmE,GAAW6oK,EAAInvO,GAAKovO,EAAIpvO,GAE1B,OAAOsmE,EAET,SAASqnL,IAAoBhgC,EAAK2hB,GAChC,MAAMC,EAAS,GACf,IAAK,IAAIvvO,EAAI,EAAGA,EAAI2tN,EAAI1tN,OAAQD,IAC9BuvO,EAAOrvO,KAAKytN,EAAI3tN,GAAGsvO,IAErB,OAAOC,EAET,SAASqe,IAA2Bne,EAAMC,GACxC,MAAMppK,EAAU,GACVukJ,EAAQ4kB,EAAKxvO,OACnB,IAAK,IAAI0vO,EAAM,EAAGA,EAAM9kB,EAAO8kB,IAAO,CACpCrpK,EAAQpmE,KAAK,IACb,IAAK,IAAI0vO,EAAM,EAAGA,EAAM/kB,EAAO+kB,IAC7BtpK,EAAQqpK,GAAKzvO,KAAKwtP,IAAKje,EAAKE,GAAMge,IAAoBje,EAAME,KAGhE,OAAOtpK,EAET,SAASunL,IAAqBzxP,EAAUi9F,GACtC,MAAMy2I,EAAOvwO,KAAK6kB,IAAIhoB,GAChB2zO,EAAOxwO,KAAK85B,IAAIj9B,GAChB4zO,EAAiB,CAAC,CAACF,GAAOC,EAAM,GAAI,CAACA,EAAMD,EAAM,GAAI,CAAC,EAAG,EAAG,IAC5DG,EAAoBwd,IAAwBp0J,EAAO,GAAIA,EAAO,IAC9D62I,EAA2B0d,IAA2B3d,EAAmBD,GACzEG,EAA4Bsd,KAAyBp0J,EAAO,IAAKA,EAAO,IAC9E,OAAOu0J,IAA2B1d,EAA0BC,GAE9D,SAAS2d,IAAuBrkC,GAC9B,MAAM4mB,EAAoB,CAAC,CAAC5mB,EAAO,GAAG,GAAIA,EAAO,GAAG,IAAK,CAACA,EAAO,GAAG,GAAIA,EAAO,GAAG,KAC5E6mB,EAAuB,CAAC7mB,EAAO,GAAG,GAAIA,EAAO,GAAG,IAChD8mB,EAAsB,EACzBmd,IAAKrd,EAAkB,GAAIC,IAC3Bod,IAAKrd,EAAkB,GAAIC,IAE9B,MAAO,CACLD,EAAkB,GAAGvtN,OAAOytN,EAAoB,IAChDF,EAAkB,GAAGvtN,OAAOytN,EAAoB,IAChD,CAAC,EAAG,EAAG,IAGX,SAASwd,IAAatd,EAAuBT,GAC3C,MAAO,CACL0d,IAAKjd,EAAuBT,EAAe,IAC3C0d,IAAKjd,EAAuBT,EAAe,KAK/C,IA6mGIge,IACAC,IACAC,IA/mGAC,IAAW,CACb,CAAEpvP,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,QAAUE,EAAG,SAClB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,OAASE,EAAG,QACjB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,EAAG,MAAQE,EAAG,OAChB,CAAEF,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","file":"js/chunk-6c9bb2e8.7b58f9ec.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticStyle:{\"text-align\":\"center\"}},[_c('h2',{staticClass:\"has-text-centered has-text-weight-bold is-size-3\"},[_vm._v(\"\\n CAPTURA FACIAL\\n \")]),_c('p',{staticClass:\"has-text-centered mt-2 subtitle\"},[_vm._v(\"\\n Siga las intrucciones en pantalla y asegúrese de cumplir con todas las\\n instrucciones\\n \")]),(_vm.action)?_c('div',{staticClass:\"has-text-centered mt-4 p-2\",staticStyle:{\"background-color\":\"#0967b1\",\"color\":\"white\"}},[_c('span',[_vm._v(_vm._s(_vm.action))])]):_vm._e(),(_vm.show)?_c('div',{staticClass:\"loader mt-4\"}):_vm._e(),_c('div',{staticClass:\"text-center mt-4\",staticStyle:{\"position\":\"relative\"}},[_c('div',{staticClass:\"webcam_container\"},[_c('canvas',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isPhotoTaken),expression:\"isPhotoTaken\"}],ref:\"photoTakenCanvas\",attrs:{\"id\":\"final-photo\"}}),_c('video',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isPhotoTaken && !_vm.isShotPhoto),expression:\"!isPhotoTaken && !isShotPhoto\"}],ref:\"camera\",attrs:{\"id\":\"video-face\",\"width\":450,\"height\":337,\"autoplay\":\"\",\"playsinline\":\"\"}}),_c('canvas',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isPhotoTaken && !_vm.isShotPhoto),expression:\"!isPhotoTaken && !isShotPhoto\"}],ref:\"canvasface\",attrs:{\"id\":\"photoTaken\",\"width\":450,\"height\":337}})])]),(_vm.acceptPhoto)?_c('div',{staticClass:\"buttons is-centered mt-4\"},[_c('button',{staticClass:\"button is-primary image-ok\",on:{\"click\":_vm.acceptPhotoTaken}},[_vm._v(\"\\n Aceptar imagen\\n \")]),_c('button',{staticClass:\"button\",on:{\"click\":_vm.loadHuman}},[_vm._v(\"\\n Volver a capturar imagen\\n \")])]):_vm._e(),(_vm.tryAgainOption)?_c('div',{staticClass:\"field mb-4\"},[_c('div',{staticClass:\"control\"},[_c('button',{staticClass:\"button is-fullwidth mt-3 facial-btn\",on:{\"click\":_vm.loadHuman}},[_vm._v(\"\\n Presione aquí, para validar su ingreso con la captura de su rostro\\n \"),_c('img',{staticClass:\"ml-2\",attrs:{\"src\":require(`@/assets/imageface.png`),\"width\":\"32\",\"height\":\"32\"}})])])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Variables } from \"../../variables\";\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport Human from \"@vladmandic/human\";\r\nimport SpeechSynthesisUtterance from \"speech-synthesis\";\r\n\r\n@Component({})\r\nexport default class FaceDetector extends Vue {\r\n @Prop() readonly start!: boolean;\r\n\r\n private action = \"\";\r\n private step1 = false;\r\n private step2 = false;\r\n private isPhotoTaken = false;\r\n private acceptPhoto = false;\r\n private image = \"\";\r\n private isShotPhoto = false;\r\n private neutral_step = false;\r\n private smile_step = false;\r\n private imageFace = \"\";\r\n private attemps = 0;\r\n private tryAgainOption = false;\r\n private human: any;\r\n private humanConfig: any;\r\n private timestamp: any;\r\n private fps: any;\r\n private detectionGestures: any;\r\n private show = true;\r\n\r\n private message = \"Coloque su rostro en el círculo\";\r\n\r\n private stream: MediaStream | null = null;\r\n private canvas: HTMLCanvasElement | null = null;\r\n private video!: HTMLVideoElement;\r\n private face: any = null;\r\n private drawTimer: number | null = null;\r\n private intervalTimer: number | null = null;\r\n\r\n private circleColor = \"#FF0000\";\r\n private greenTimer = 0;\r\n private isInsideCircle = false;\r\n private isGreen = this.circleColor == \"00ff00\";\r\n private gestures = [\r\n \"Mirar hacia arriba\",\r\n \"Mirar hacia abajo\",\r\n \"Mirar hacia la izquierda\",\r\n \"Mirar hacia la derecha\",\r\n ];\r\n\r\n $refs!: {\r\n recaptcha: HTMLInputElement;\r\n canvasface: HTMLCanvasElement;\r\n camera: HTMLVideoElement;\r\n photoTakenCanvas: HTMLCanvasElement;\r\n };\r\n smileInterval: any;\r\n neutralInterval: any;\r\n drawInterval: any;\r\n\r\n get pathBase() {\r\n return `${Variables.ApiBaseUrl}`;\r\n }\r\n\r\n async mounted() {\r\n if (this.isWebGLSupported()) {\r\n console.log(\"isWebGLSupported OK\");\r\n } else {\r\n console.log(\"isWebGLSupported NOK\");\r\n }\r\n this.loadHuman();\r\n }\r\n isWebGLSupported() {\r\n try {\r\n const canvas = document.createElement(\"canvas\");\r\n const gl =\r\n canvas.getContext(\"webgl\") || canvas.getContext(\"experimental-webgl\");\r\n return !!gl;\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n beforeDestroy() {\r\n clearInterval(this.drawTimer!);\r\n clearInterval(this.intervalTimer!);\r\n this.stream?.getTracks()[0].stop();\r\n }\r\n loadHuman() {\r\n if (this.start !== false) {\r\n this.action = \"\";\r\n this.step1 = false;\r\n this.step2 = false;\r\n this.isPhotoTaken = false;\r\n this.acceptPhoto = false;\r\n this.image = \"\";\r\n this.isShotPhoto = false;\r\n this.neutral_step = false;\r\n this.smile_step = false;\r\n this.imageFace = \"\";\r\n this.show = true;\r\n this.tryAgainOption = false;\r\n\r\n const humanConfig = {\r\n // user configuration for human, used to fine-tune behavior\r\n cacheSensitivity: 0,\r\n modelBasePath: \"https://cdn.jsdelivr.net/npm/@vladmandic/human/models\",\r\n async: true,\r\n filter: { enabled: true, equalization: false }, // lets run with histogram equilizer\r\n debug: false,\r\n face: {\r\n enabled: true,\r\n detector: { rotation: true, return: true, mask: false }, // return tensor is used to get detected face image\r\n description: { enabled: true }, // default model for face descriptor extraction is faceres\r\n // mobilefacenet: { enabled: true, modelPath: 'https://vladmandic.github.io/human-models/models/mobilefacenet.json' }, // alternative model\r\n // insightface: { enabled: true, modelPath: 'https://vladmandic.github.io/insightface/models/insightface-mobilenet-swish.json' }, // alternative model\r\n iris: { enabled: true }, // needed to determine gaze direction\r\n emotion: { enabled: false }, // not needed\r\n // antispoof: { enabled: true }, // enable optional antispoof module\r\n // liveness: { enabled: true }, // enable optional liveness module\r\n },\r\n body: { enabled: false },\r\n hand: { enabled: false },\r\n object: { enabled: false },\r\n gesture: { enabled: true }, // parses face and iris gestures\r\n };\r\n\r\n this.human = new Human(humanConfig);\r\n this.canvas = this.$refs.canvasface;\r\n this.video = this.$refs.camera;\r\n this.detectionGestures = [\"none\"];\r\n\r\n navigator.mediaDevices\r\n .getUserMedia({\r\n audio: false,\r\n video: {\r\n facingMode: \"user\",\r\n },\r\n })\r\n .then((stream) => {\r\n this.stream = stream;\r\n this.video.srcObject = stream;\r\n this.show = false;\r\n this.video.play();\r\n\r\n this.human?.load().then(() => {\r\n this.startDetection();\r\n });\r\n })\r\n .catch((error) => {\r\n console.log(\"Error loadHuman\");\r\n console.log(error);\r\n });\r\n } else {\r\n this.stopCameraStream();\r\n }\r\n }\r\n startDetection() {\r\n this.drawTimer = setInterval(this.draw.bind(this), 100);\r\n this.intervalTimer = setInterval(this.checkLiveness.bind(this), 1000);\r\n /*this.currentGesture =\r\n this.gestures[Math.floor(Math.random() * this.gestures.length)];*/\r\n this.action = \"Coloque su rostro dentro del círculo\";\r\n this.playAudio(this.action);\r\n }\r\n draw() {\r\n const width = this.video!.videoWidth;\r\n const height = this.video!.videoHeight;\r\n\r\n this.canvas!.width = width;\r\n this.canvas!.height = height;\r\n\r\n this.drawOval(this.circleColor);\r\n\r\n this.human!.detect(this.video!).then((result: any) => {\r\n this.face = result.face[0];\r\n\r\n if (this.face) {\r\n const x = this.face.box[0];\r\n const y = this.face.box[1];\r\n const w = this.face.box[2];\r\n const h = this.face.box[3];\r\n const centerX = x + w / 2;\r\n const centerY = y + h / 2;\r\n const radius = Math.min(w, h) / 2;\r\n const videoWidth = this.video!.videoWidth;\r\n const videoHeight = this.video!.videoHeight;\r\n const circleCenterX = videoWidth / 2;\r\n const circleCenterY = videoHeight / 2;\r\n const distanceToCenter = Math.sqrt(\r\n (centerX - circleCenterX) ** 2 + (centerY - circleCenterY) ** 2\r\n );\r\n\r\n if (distanceToCenter <= radius) {\r\n this.isInsideCircle = true;\r\n } else {\r\n this.isInsideCircle = false;\r\n }\r\n\r\n // check if face is inside circle\r\n if (this.isInsideCircle) {\r\n this.greenTimer += 100;\r\n // check if enough time has passed inside the circle\r\n if (this.greenTimer >= 2000) {\r\n this.circleColor = \"#00FF00\";\r\n this.isGreen = true;\r\n let gestures: string[] = Object.values(result.gesture).map(\r\n (gesture: any) => gesture.gesture\r\n ); // flatten all gestures\r\n for (var i = 0; i < gestures.length; i++) {\r\n this.detectionGestures.push(gestures[i]);\r\n }\r\n } else {\r\n this.action = \"Manténgase quieto con el rostro dentro del círculo\";\r\n this.circleColor = \"#FF0000\";\r\n this.isGreen = false;\r\n\r\n this.detectionGestures = [\"none\"];\r\n }\r\n } else {\r\n this.action = \"Coloque su rostro dentro del círculo\";\r\n this.greenTimer = 0;\r\n this.circleColor = \"#FF0000\";\r\n this.isGreen = false;\r\n }\r\n } else {\r\n this.message = \"No se ha detectado un rostro\";\r\n this.greenTimer = 0;\r\n this.circleColor = \"#FF0000\";\r\n this.action = \"Coloque su rostro dentro del círculo\";\r\n this.isGreen = false;\r\n }\r\n });\r\n }\r\n checkLiveness() {\r\n if (this.isGreen) {\r\n this.isGreen = true;\r\n clearInterval(this.intervalTimer!);\r\n this.action = \"CIERRE Y ABRA LOS OJOS EN LOS PRÓXIMOS 5 SEGUNDOS\";\r\n this.playAudio(\"CIERRE Y ABRA LOS OJOS EN LOS PRÓXIMOS 5 SEGUNDOS\");\r\n this.step1Validation();\r\n }\r\n }\r\n\r\n playAudio(message: string) {\r\n this.speakMessage(message);\r\n }\r\n\r\n speakMessage(message: string) {\r\n try {\r\n if (window.speechSynthesis && message) {\r\n const utterance = new SpeechSynthesisUtterance(`${message}`);\r\n utterance.lang = \"es-ES\";\r\n window.speechSynthesis.speak(utterance);\r\n }\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n stopSpeaking() {\r\n if (window.speechSynthesis && window.speechSynthesis.speaking) {\r\n window.speechSynthesis.cancel();\r\n }\r\n }\r\n\r\n async step1Validation() {\r\n setTimeout(async () => {\r\n if (this.face) {\r\n if (!this.isGreen) {\r\n this.startDetection();\r\n } else {\r\n if (\r\n this.detectionGestures.includes(\"blink left eye\") &&\r\n this.detectionGestures.includes(\"blink right eye\")\r\n ) {\r\n this.smile_step = true;\r\n this.action = \"MIRE HACIA EL CENTRO DE LA IMAGEN\";\r\n this.playAudio(\"MIRE HACIA EL CENTRO DE LA IMAGEN\");\r\n this.step2Validation();\r\n } else {\r\n clearInterval(this.drawTimer!);\r\n clearInterval(this.intervalTimer!);\r\n\r\n this.action =\r\n \"NO HA CUMPLIDO LA VALIDACIÓN, INTENTE NUEVAMENTE, ASEGÚRESE DE NO TENER MASCARILLA, RECUERDE QUE TAMBIÉN PUEDE INGRESAR CON SU CONTRASEÑA\";\r\n this.neutral_step = false;\r\n this.smile_step = false;\r\n this.attemps++;\r\n this.tryAgainOption = true;\r\n if (3 - this.attemps == 0) {\r\n this.action =\r\n \"Ha realizado los 3 intentos de validación disponibles, por favor intente en otro momento\";\r\n this.tryAgainOption = false;\r\n }\r\n this.isShotPhoto = true;\r\n\r\n this.stopCameraStream();\r\n }\r\n }\r\n } else {\r\n this.action =\r\n \"NO HA CUMPLIDO LA VALIDACIÓN, INTENTE NUEVAMENTE, ASEGÚRESE DE NO TENER MASCARILLA, RECUERDE QUE TAMBIÉN PUEDE INGRESAR CON SU CONTRASEÑA\";\r\n this.neutral_step = false;\r\n this.smile_step = false;\r\n this.attemps++;\r\n this.tryAgainOption = true;\r\n if (3 - this.attemps == 0) {\r\n this.action =\r\n \"Ha realizado los 3 intentos de validación disponibles, por favor intente en otro momento\";\r\n this.tryAgainOption = false;\r\n }\r\n this.isShotPhoto = true;\r\n clearInterval(this.drawTimer!);\r\n clearInterval(this.intervalTimer!);\r\n this.stream?.getTracks()[0].stop();\r\n this.stopCameraStream();\r\n }\r\n }, 5000);\r\n }\r\n\r\n async step2Validation() {\r\n let detections = this.human.result;\r\n\r\n setTimeout(async () => {\r\n if (detections.face.length > 0) {\r\n if (!this.isGreen) {\r\n this.startDetection();\r\n } else {\r\n if (this.detectionGestures.includes(\"looking center\")) {\r\n this.neutral_step = true;\r\n } else {\r\n this.action =\r\n \"NO HA CUMPLIDO LA VALIDACIÓN, INTENTE NUEVAMENTE, ASEGÚRESE DE NO TENER MASCARILLA, RECUERDE QUE TAMBIÉN PUEDE INGRESAR CON SU CONTRASEÑA\";\r\n\r\n this.neutral_step = false;\r\n this.smile_step = false;\r\n this.attemps++;\r\n this.tryAgainOption = true;\r\n if (3 - this.attemps == 0) {\r\n this.action =\r\n \"Ha realizado los 3 intentos de validación disponibles, por favor intente en otro momento\";\r\n this.tryAgainOption = false;\r\n }\r\n this.isShotPhoto = true;\r\n clearInterval(this.drawTimer!);\r\n clearInterval(this.intervalTimer!);\r\n this.stream?.getTracks()[0].stop();\r\n this.stopCameraStream();\r\n }\r\n if (this.neutral_step && this.smile_step) {\r\n this.takePhoto();\r\n\r\n this.action = \"CAPTURA REALIZADA\";\r\n this.neutral_step = false;\r\n this.smile_step = false;\r\n clearInterval(this.drawTimer!);\r\n clearInterval(this.intervalTimer!);\r\n }\r\n }\r\n } else {\r\n this.action = \"NO SE DETECTA UNA PERSONA\";\r\n }\r\n }, 4000);\r\n }\r\n\r\n setGreenOval() {\r\n this.clearCanvas();\r\n this.drawOval(\"#00ff00\");\r\n this.isGreen = true;\r\n }\r\n\r\n clearCanvas() {\r\n let canvas = this.$refs.canvasface;\r\n var ctx: any = canvas.getContext(\"2d\");\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n }\r\n\r\n drawOval(color: any) {\r\n let canvas = this.$refs.canvasface;\r\n var ctx: any = canvas.getContext(\"2d\");\r\n let width = canvas.width;\r\n let height = canvas.height;\r\n ctx.beginPath();\r\n if (window.screen.width < 768) {\r\n ctx.ellipse(\r\n this.video.videoWidth / 2,\r\n this.video.videoHeight / 2,\r\n 210,\r\n 210,\r\n 0,\r\n 0,\r\n 2 * Math.PI\r\n );\r\n } else {\r\n ctx.ellipse(\r\n this.video.videoWidth / 2,\r\n this.video.videoHeight / 2,\r\n this.video.videoWidth / 4,\r\n this.video.videoWidth / 4,\r\n 0,\r\n 0,\r\n 2 * Math.PI\r\n );\r\n }\r\n ctx.lineWidth = 3;\r\n ctx!.setLineDash([5, 3]);\r\n ctx.strokeStyle = color;\r\n ctx.stroke();\r\n ctx.rect(0, 0, width, height);\r\n ctx.fillStyle = \"rgba(220, 220, 220, 0.8)\";\r\n ctx.fill(\"evenodd\");\r\n }\r\n\r\n takePhoto() {\r\n this.isPhotoTaken = true;\r\n const canvas = this.$refs.photoTakenCanvas;\r\n const ctx: any = canvas.getContext(\"2d\");\r\n canvas.width = this.$refs.camera.videoWidth;\r\n canvas.height = this.$refs.camera.videoHeight;\r\n ctx.drawImage(this.$refs.camera, 0, 0, canvas.width, canvas.height);\r\n\r\n this.imageFace = canvas.toDataURL(\"image/jpeg\");\r\n\r\n ctx.beginPath();\r\n if (window.screen.width < 768) {\r\n ctx.ellipse(\r\n this.video.videoWidth / 2,\r\n this.video.videoHeight / 2,\r\n 210,\r\n 210,\r\n 0,\r\n 0,\r\n 2 * Math.PI\r\n );\r\n } else {\r\n ctx.ellipse(\r\n this.video.videoWidth / 2,\r\n this.video.videoHeight / 2,\r\n this.video.videoWidth / 4,\r\n this.video.videoWidth / 4,\r\n 0,\r\n 0,\r\n 2 * Math.PI\r\n );\r\n }\r\n ctx.lineWidth = 3;\r\n ctx.strokeStyle = \"green\";\r\n ctx.stroke();\r\n ctx.rect(0, 0, canvas.width, canvas.height);\r\n ctx.fillStyle = \"rgba(220, 220, 220, 0.8)\";\r\n ctx.fill(\"evenodd\");\r\n\r\n //save capture\r\n this.image = canvas.toDataURL(\"image/jpeg\");\r\n //this.acceptPhoto = true;\r\n this.acceptPhotoTaken();\r\n this.stopCameraStream();\r\n }\r\n\r\n stopCameraStream() {\r\n try {\r\n const video = document.getElementById(\"video-face\") as HTMLVideoElement;\r\n if (video) {\r\n video.pause();\r\n (video.srcObject as MediaStream)\r\n ?.getTracks()\r\n .forEach((stream) => stream.stop());\r\n }\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n acceptPhotoTaken() {\r\n const fileSizeInBytes = this.imageFace.length * 0.75;\r\n const fileSizeInKB = fileSizeInBytes / 1024;\r\n const fileSizeInMB = fileSizeInKB / 1024;\r\n\r\n if (fileSizeInMB > 1) {\r\n const img = new Image();\r\n img.onload = () => {\r\n const maxWidth = 1024;\r\n const maxHeight = 1024;\r\n let newWidth = img.width;\r\n let newHeight = img.height;\r\n\r\n if (img.width > maxWidth) {\r\n newWidth = maxWidth;\r\n newHeight = (img.height * maxWidth) / img.width;\r\n }\r\n\r\n if (newHeight > maxHeight) {\r\n newHeight = maxHeight;\r\n newWidth = (img.width * maxHeight) / img.height;\r\n }\r\n\r\n const canvas = document.createElement(\"canvas\");\r\n const ctx: any = canvas.getContext(\"2d\");\r\n canvas.width = newWidth;\r\n canvas.height = newHeight;\r\n ctx.drawImage(img, 0, 0, newWidth, newHeight);\r\n const resizedImage = canvas.toDataURL(\"image/jpeg\", 0.8);\r\n this.imageFace = resizedImage;\r\n this.$emit(\"photoTaken\", this.isPhotoTaken, this.imageFace);\r\n };\r\n img.src = this.imageFace;\r\n } else {\r\n this.$emit(\"photoTaken\", this.isPhotoTaken, this.imageFace);\r\n }\r\n\r\n this.acceptPhoto = false;\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaceDetector.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaceDetector.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FaceDetector.vue?vue&type=template&id=7dd534b2&\"\nimport script from \"./FaceDetector.vue?vue&type=script&lang=ts&\"\nexport * from \"./FaceDetector.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FaceDetector.vue?vue&type=style&index=0&id=7dd534b2&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/*\n Human\n homepage: \n author: '\n*/\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __export = (target, all2) => {\n for (var name in all2)\n __defProp(target, name, { get: all2[name], enumerable: true });\n};\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nvar __accessCheck = (obj, member, msg) => {\n if (!member.has(obj))\n throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet = (obj, member, getter) => {\n __accessCheck(obj, member, \"read from private field\");\n return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd = (obj, member, value) => {\n if (member.has(obj))\n throw TypeError(\"Cannot add the same private member more than once\");\n member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet = (obj, member, value, setter) => {\n __accessCheck(obj, member, \"write to private field\");\n setter ? setter.call(obj, value) : member.set(obj, value);\n return value;\n};\n\n// dist/tfjs.esm.js\nvar tfjs_esm_exports = {};\n__export(tfjs_esm_exports, {\n Abs: () => ys,\n Acos: () => aa,\n Acosh: () => ia,\n AdadeltaOptimizer: () => yu,\n AdagradOptimizer: () => bu,\n AdamOptimizer: () => Cu,\n AdamaxOptimizer: () => Su,\n Add: () => eo,\n AddN: () => Po,\n All: () => Mo,\n Any: () => Lo,\n ArgMax: () => Bo,\n ArgMin: () => ei,\n Asin: () => ua,\n Asinh: () => pa,\n Atan: () => ca,\n Atan2: () => ma,\n Atanh: () => la,\n AvgPool: () => Vo,\n AvgPool3D: () => dp,\n AvgPool3DGrad: () => vm,\n AvgPoolGrad: () => mp,\n BackendWasm: () => Ll,\n BatchMatMul: () => zo,\n BatchToSpaceND: () => bs,\n Bincount: () => ti,\n BroadcastArgs: () => fp,\n BroadcastTo: () => ise,\n Cast: () => co,\n Ceil: () => Wo,\n ClipByValue: () => lo,\n Complex: () => ri,\n ComplexAbs: () => hp,\n Concat: () => Cs,\n Conv2D: () => Uo,\n Conv2DBackpropFilter: () => oi,\n Conv2DBackpropInput: () => Go,\n Conv3D: () => gp,\n Conv3DBackpropFilterV2: () => km,\n Conv3DBackpropInputV2: () => xp,\n Cos: () => Ho,\n Cosh: () => Ko,\n CropAndResize: () => Xo,\n Cumprod: () => qo,\n Cumsum: () => jo,\n DataStorage: () => Fo,\n DenseBincount: () => ni,\n DepthToSpace: () => Yo,\n DepthwiseConv2dNative: () => Qo,\n DepthwiseConv2dNativeBackpropFilter: () => yp,\n DepthwiseConv2dNativeBackpropInput: () => bp,\n Diag: () => si,\n Dilation2D: () => ai,\n Dilation2DBackpropFilter: () => $b,\n Dilation2DBackpropInput: () => _b,\n ENV: () => kb,\n Einsum: () => ii,\n Elu: () => Jo,\n EluGrad: () => Nm,\n Environment: () => Uc,\n Equal: () => en,\n Erf: () => da,\n Exp: () => tn,\n ExpandDims: () => Ss,\n Expm1: () => fa,\n FFT: () => ui,\n Fill: () => ws,\n FlipLeftRight: () => rn,\n Floor: () => on,\n FloorDiv: () => nn,\n FromPixels: () => Zi,\n FusedBatchNorm: () => sn,\n FusedConv2D: () => go,\n FusedDepthwiseConv2D: () => xo,\n GPGPUContext: () => Lu,\n GatherNd: () => an,\n GatherV2: () => Is,\n GraphModel: () => fl,\n Greater: () => un,\n GreaterEqual: () => pn,\n IFFT: () => pi,\n Identity: () => mo,\n Imag: () => ci,\n IsFinite: () => ha,\n IsInf: () => ga,\n IsNan: () => cn,\n KernelBackend: () => Zr,\n LRN: () => mi,\n LRNGrad: () => Tm,\n LeakyRelu: () => ln,\n Less: () => mn,\n LessEqual: () => dn,\n LinSpace: () => li,\n Log: () => fn,\n Log1p: () => xa,\n LogSoftmax: () => use,\n LogicalAnd: () => hn,\n LogicalNot: () => gn,\n LogicalOr: () => xn,\n LogicalXor: () => XI,\n LowerBound: () => pse,\n MathBackendCPU: () => Pi,\n MathBackendWebGL: () => Vi,\n Max: () => yn,\n MaxPool: () => Cn,\n MaxPool3D: () => Cp,\n MaxPool3DGrad: () => $m,\n MaxPoolGrad: () => _m,\n MaxPoolWithArgmax: () => Sp,\n Maximum: () => bn,\n Mean: () => Sn,\n Min: () => wn,\n Minimum: () => In,\n MirrorPad: () => vn,\n Mod: () => ya,\n MomentumOptimizer: () => wu,\n Multinomial: () => wp,\n Multiply: () => kn,\n Neg: () => vs,\n NonMaxSuppressionV3: () => Tn,\n NonMaxSuppressionV4: () => ba,\n NonMaxSuppressionV5: () => _n,\n NotEqual: () => Nn,\n OP_SCOPE_SUFFIX: () => jb,\n OneHot: () => $n,\n OnesLike: () => ks,\n Optimizer: () => wr,\n OptimizerConstructors: () => cl,\n Pack: () => Ns,\n PadV2: () => En,\n Pool: () => cse,\n Pow: () => An,\n Prelu: () => Rn,\n Prod: () => Dn,\n RMSPropOptimizer: () => Iu,\n RaggedGather: () => Ip,\n RaggedRange: () => vp,\n RaggedTensorToTensor: () => kp,\n Range: () => Ts,\n Rank: () => Lb,\n Real: () => di,\n RealDiv: () => Zo,\n Reciprocal: () => Fn,\n Reduction: () => $t,\n Relu: () => On,\n Relu6: () => Ln,\n Reshape: () => _s,\n ResizeBilinear: () => Mn,\n ResizeBilinearGrad: () => Am,\n ResizeNearestNeighbor: () => Pn,\n ResizeNearestNeighborGrad: () => Em,\n Reverse: () => Bn,\n RotateWithOffset: () => ts,\n Round: () => Vn,\n Rsqrt: () => zn,\n SGDOptimizer: () => Pa,\n ScatterNd: () => Wn,\n SearchSorted: () => fi,\n Select: () => $s,\n Selu: () => Ca,\n Sigmoid: () => Gn,\n Sign: () => wa,\n Sin: () => Un,\n Sinh: () => Sa,\n Slice: () => Es,\n Softmax: () => qn,\n Softplus: () => Ia,\n SpaceToBatchND: () => As,\n SparseFillEmptyRows: () => hi,\n SparseReshape: () => va,\n SparseSegmentMean: () => gi,\n SparseSegmentSum: () => xi,\n SparseToDense: () => yi,\n SplitV: () => Rs,\n Sqrt: () => Hn,\n Square: () => bi,\n SquaredDifference: () => jn,\n Step: () => fo,\n StridedSlice: () => Xn,\n StringNGrams: () => Ds,\n StringSplit: () => Ci,\n StringToHashBucketFast: () => Si,\n Sub: () => Yn,\n Sum: () => Kn,\n Tan: () => Qn,\n Tanh: () => Zn,\n Tensor: () => it,\n TensorBuffer: () => st,\n Tile: () => to,\n TopK: () => Jn,\n Transform: () => es,\n Transpose: () => ro,\n Unique: () => Np,\n Unpack: () => Fs,\n UnsortedSegmentSum: () => Tp,\n UpperBound: () => lse,\n Variable: () => Na,\n WebGPUBackend: () => Gi,\n ZerosLike: () => Os,\n _FusedMatMul: () => ho,\n abs: () => Yt,\n acos: () => G0,\n acosh: () => H0,\n add: () => be,\n addN: () => K0,\n all: () => q0,\n any: () => j0,\n argMax: () => X0,\n argMin: () => Y0,\n asin: () => Q0,\n asinh: () => Z0,\n atan: () => J0,\n atan2: () => ev,\n atanh: () => tv,\n avgPool: () => qm,\n avgPool3d: () => nv,\n backend: () => Pie,\n backend_util: () => S,\n basicLSTMCell: () => sv,\n batchNorm: () => _i,\n batchNorm2d: () => iv,\n batchNorm3d: () => uv,\n batchNorm4d: () => pv,\n batchToSpaceND: () => jm,\n bincount: () => Xm,\n booleanMaskAsync: () => VG,\n broadcastArgs: () => cv,\n broadcastTo: () => $i,\n broadcast_util: () => yr,\n browser: () => gN,\n buffer: () => le,\n cast: () => je,\n ceil: () => lv,\n clipByValue: () => mv,\n clone: () => Lr,\n complex: () => Tr,\n concat: () => xt,\n concat1d: () => dv,\n concat2d: () => fv,\n concat3d: () => hv,\n concat4d: () => gv,\n conv1d: () => xv,\n conv2d: () => Ei,\n conv2dTranspose: () => yv,\n conv3d: () => bv,\n conv3dTranspose: () => Sv,\n copyRegisteredKernels: () => bse,\n cos: () => wv,\n cosh: () => Iv,\n cosineWindow: () => al,\n cumprod: () => vv,\n cumsum: () => kv,\n customGrad: () => br,\n denseBincount: () => Nv,\n deprecationWarn: () => nC,\n depthToSpace: () => Tv,\n depthwiseConv2d: () => Bp,\n deregisterOp: () => Mq,\n device_util: () => ki,\n diag: () => _v,\n dilation2d: () => $v,\n disableDeprecationWarnings: () => kie,\n dispose: () => Ot,\n disposeVariables: () => Nie,\n div: () => He,\n divNoNan: () => Av,\n dot: () => Rv,\n dropout: () => ZG,\n einsum: () => Dv,\n elu: () => Jm,\n enableDebugMode: () => vie,\n enableProdMode: () => Iie,\n enclosingPowerOfTwo: () => CC,\n engine: () => sr,\n env: () => O,\n equal: () => Zm,\n erf: () => Fv,\n euclideanNorm: () => Mv,\n exp: () => So,\n expandDims: () => Ra,\n expm1: () => Lv,\n eye: () => ed,\n fft: () => zp,\n fill: () => Us,\n findBackend: () => Fie,\n findBackendFactory: () => Oie,\n floor: () => td,\n floorDiv: () => Km,\n forceHalfFloat: () => GE,\n fused: () => SC,\n gather: () => rd,\n gatherND: () => YG,\n gather_util: () => Wd,\n getBackend: () => Rie,\n getGradient: () => Eb,\n getKernel: () => Kc,\n getKernelsForBackend: () => Rm,\n getThreadsCount: () => Kee,\n gpgpu_util: () => $w,\n grad: () => HU,\n grads: () => KU,\n greater: () => uu,\n greaterEqual: () => od,\n ifft: () => du,\n imag: () => Ri,\n image: () => eK,\n inTopKAsync: () => eH,\n io: () => La,\n irfft: () => Td,\n isFinite: () => Bv,\n isInf: () => Vv,\n isNaN: () => zv,\n keep: () => _r,\n kernel_impls: () => Vt,\n leakyRelu: () => nd,\n less: () => Wv,\n lessEqual: () => Vp,\n linalg: () => tK,\n linspace: () => Uv,\n loadGraphModel: () => A6,\n loadGraphModelSync: () => R6,\n localResponseNormalization: () => Gv,\n log: () => Da,\n log1p: () => sd,\n logSigmoid: () => Hv,\n logSoftmax: () => Kv,\n logSumExp: () => ud,\n logicalAnd: () => pu,\n logicalNot: () => pd,\n logicalOr: () => cd,\n logicalXor: () => qv,\n losses: () => rK,\n lowerBound: () => jv,\n matMul: () => Xe,\n math: () => fN,\n max: () => Gs,\n maxPool: () => md,\n maxPool3d: () => Xv,\n maxPoolWithArgmax: () => Yv,\n maximum: () => dd,\n mean: () => cu,\n memory: () => Tie,\n meshgrid: () => Qv,\n min: () => rl,\n minimum: () => fd,\n mirrorPad: () => Zv,\n mod: () => Jv,\n moments: () => ek,\n movingAverage: () => UG,\n mul: () => ne,\n multiRNNCell: () => tk,\n multinomial: () => rk,\n neg: () => Cr,\n nextFrame: () => AC,\n norm: () => iu,\n notEqual: () => hd,\n oneHot: () => nl,\n ones: () => Hs,\n onesLike: () => ok,\n op: () => N,\n outerProduct: () => nk,\n pad: () => Ks,\n pad1d: () => sk,\n pad2d: () => ak,\n pad3d: () => ik,\n pad4d: () => uk,\n pool: () => pk,\n pow: () => Aa,\n prelu: () => xd,\n print: () => Hm,\n prod: () => ck,\n profile: () => _ie,\n raggedGather: () => lk,\n raggedRange: () => mk,\n raggedTensorToTensor: () => dk,\n rand: () => fk,\n randomGamma: () => Ok,\n randomNormal: () => Id,\n randomStandardNormal: () => Pk,\n randomUniform: () => vd,\n range: () => Di,\n ready: () => Aie,\n real: () => Fa,\n reciprocal: () => Mk,\n registerBackend: () => Ti,\n registerGradient: () => gse,\n registerKernel: () => ka,\n registerOp: () => Pq,\n relu: () => Fi,\n relu6: () => kd,\n removeBackend: () => Die,\n reshape: () => W,\n reverse: () => no,\n reverse1d: () => Lk,\n reverse2d: () => Bk,\n reverse3d: () => Vk,\n reverse4d: () => zk,\n rfft: () => Wp,\n round: () => Nd,\n rsqrt: () => Wk,\n scalar: () => Ce,\n scatterND: () => HG,\n scatter_util: () => sl,\n searchSorted: () => ol,\n selu: () => Uk,\n separableConv2d: () => Gk,\n serialization: () => oN,\n setBackend: () => Eie,\n setPlatform: () => Mie,\n setThreadsCount: () => Hee,\n setWasmPath: () => Uee,\n setWasmPaths: () => Gee,\n setWebGLContext: () => US,\n setdiff1dAsync: () => Hk,\n shared: () => Zp,\n sigmoid: () => Ws,\n sign: () => Kk,\n signal: () => JH,\n sin: () => qk,\n sinh: () => jk,\n slice: () => Ke,\n slice1d: () => Xk,\n slice2d: () => Yk,\n slice3d: () => Qk,\n slice4d: () => Zk,\n slice_util: () => ut,\n softmax: () => Jk,\n softplus: () => id,\n spaceToBatchND: () => gd,\n sparse: () => oK,\n sparseToDense: () => jG,\n spectral: () => ZH,\n split: () => Oa,\n sqrt: () => $r,\n square: () => Qt,\n squaredDifference: () => _d,\n squeeze: () => Up,\n stack: () => Sr,\n step: () => $d,\n stridedSlice: () => e1,\n string: () => nK,\n sub: () => ke,\n sum: () => et,\n sumOutType: () => Ta,\n tan: () => t1,\n tanh: () => tl,\n tensor: () => nr,\n tensor1d: () => dr,\n tensor2d: () => Oi,\n tensor3d: () => Ed,\n tensor4d: () => r1,\n tensor5d: () => o1,\n tensor6d: () => n1,\n tensor_util: () => C0,\n test_util: () => Fk,\n tidy: () => Ee,\n tile: () => Ai,\n time: () => $ie,\n topk: () => s1,\n train: () => YMe,\n transpose: () => Gp,\n truncatedNormal: () => a1,\n unique: () => i1,\n unregisterGradient: () => yse,\n unregisterKernel: () => xse,\n unsortedSegmentSum: () => u1,\n unstack: () => so,\n upcastType: () => dt,\n upperBound: () => p1,\n util: () => y,\n valueAndGrad: () => qU,\n valueAndGrads: () => jU,\n variable: () => c1,\n variableGrads: () => pC,\n version: () => tse,\n version_converter: () => F6,\n version_core: () => RK,\n version_cpu: () => pj,\n version_wasm: () => qee,\n version_webgl: () => nY,\n webgl: () => CJe,\n webgl_util: () => nc,\n webgpu_util: () => hI,\n where: () => ss,\n whereAsync: () => Rd,\n zeros: () => Br,\n zerosLike: () => Ut\n});\nvar PV = Object.create;\nvar yb = Object.defineProperty;\nvar MV = Object.getOwnPropertyDescriptor;\nvar LV = Object.getOwnPropertyNames;\nvar BV = Object.getPrototypeOf;\nvar VV = Object.prototype.hasOwnProperty;\nvar Kt = (r, e) => () => (e || r((e = { exports: {} }).exports, e), e.exports);\nvar Ge = (r, e) => {\n for (var t10 in e)\n yb(r, t10, { get: e[t10], enumerable: true });\n};\nvar zV = (r, e, t10, o) => {\n if (e && typeof e == \"object\" || typeof e == \"function\")\n for (let n of LV(e))\n !VV.call(r, n) && n !== t10 && yb(r, n, { get: () => e[n], enumerable: !(o = MV(e, n)) || o.enumerable });\n return r;\n};\nvar ap = (r, e, t10) => (t10 = r != null ? PV(BV(r)) : {}, zV(e || !r || !r.__esModule ? yb(t10, \"default\", { value: r, enumerable: true }) : t10, r));\nvar i0 = Kt((Sse, a0) => {\n a0.exports = It;\n var yo = null;\n try {\n yo = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11])), {}).exports;\n } catch (r) {\n }\n function It(r, e, t10) {\n this.low = r | 0, this.high = e | 0, this.unsigned = !!t10;\n }\n It.prototype.__isLong__;\n Object.defineProperty(It.prototype, \"__isLong__\", { value: true });\n function Mr(r) {\n return (r && r.__isLong__) === true;\n }\n It.isLong = Mr;\n var QI = {}, ZI = {};\n function eu(r, e) {\n var t10, o, n;\n return e ? (r >>>= 0, (n = 0 <= r && r < 256) && (o = ZI[r], o) ? o : (t10 = vt(r, (r | 0) < 0 ? -1 : 0, true), n && (ZI[r] = t10), t10)) : (r |= 0, (n = -128 <= r && r < 128) && (o = QI[r], o) ? o : (t10 = vt(r, r < 0 ? -1 : 0, false), n && (QI[r] = t10), t10));\n }\n It.fromInt = eu;\n function bo(r, e) {\n if (isNaN(r))\n return e ? Ji : Co;\n if (e) {\n if (r < 0)\n return Ji;\n if (r >= r0)\n return s0;\n } else {\n if (r <= -e0)\n return Pr;\n if (r + 1 >= e0)\n return n0;\n }\n return r < 0 ? bo(-r, e).neg() : vt(r % Ep | 0, r / Ep | 0, e);\n }\n It.fromNumber = bo;\n function vt(r, e, t10) {\n return new It(r, e, t10);\n }\n It.fromBits = vt;\n var Dm = Math.pow;\n function Db(r, e, t10) {\n if (r.length === 0)\n throw Error(\"empty string\");\n if (r === \"NaN\" || r === \"Infinity\" || r === \"+Infinity\" || r === \"-Infinity\")\n return Co;\n if (typeof e == \"number\" ? (t10 = e, e = false) : e = !!e, t10 = t10 || 10, t10 < 2 || 36 < t10)\n throw RangeError(\"radix\");\n var o;\n if ((o = r.indexOf(\"-\")) > 0)\n throw Error(\"interior hyphen\");\n if (o === 0)\n return Db(r.substring(1), e, t10).neg();\n for (var n = bo(Dm(t10, 8)), s = Co, a = 0; a < r.length; a += 8) {\n var i = Math.min(8, r.length - a), p = parseInt(r.substring(a, a + i), t10);\n if (i < 8) {\n var u = bo(Dm(t10, i));\n s = s.mul(u).add(bo(p));\n } else\n s = s.mul(n), s = s.add(bo(p));\n }\n return s.unsigned = e, s;\n }\n It.fromString = Db;\n function rs(r, e) {\n return typeof r == \"number\" ? bo(r, e) : typeof r == \"string\" ? Db(r, e) : vt(r.low, r.high, typeof e == \"boolean\" ? e : r.unsigned);\n }\n It.fromValue = rs;\n var JI = 1 << 16, cz = 1 << 24, Ep = JI * JI, r0 = Ep * Ep, e0 = r0 / 2, t0 = eu(cz), Co = eu(0);\n It.ZERO = Co;\n var Ji = eu(0, true);\n It.UZERO = Ji;\n var $p = eu(1);\n It.ONE = $p;\n var o0 = eu(1, true);\n It.UONE = o0;\n var Rb = eu(-1);\n It.NEG_ONE = Rb;\n var n0 = vt(-1, 2147483647, false);\n It.MAX_VALUE = n0;\n var s0 = vt(-1, -1, true);\n It.MAX_UNSIGNED_VALUE = s0;\n var Pr = vt(0, -2147483648, false);\n It.MIN_VALUE = Pr;\n var de = It.prototype;\n de.toInt = function() {\n return this.unsigned ? this.low >>> 0 : this.low;\n };\n de.toNumber = function() {\n return this.unsigned ? (this.high >>> 0) * Ep + (this.low >>> 0) : this.high * Ep + (this.low >>> 0);\n };\n de.toString = function(e) {\n if (e = e || 10, e < 2 || 36 < e)\n throw RangeError(\"radix\");\n if (this.isZero())\n return \"0\";\n if (this.isNegative())\n if (this.eq(Pr)) {\n var t10 = bo(e), o = this.div(t10), n = o.mul(t10).sub(this);\n return o.toString(e) + n.toInt().toString(e);\n } else\n return \"-\" + this.neg().toString(e);\n for (var s = bo(Dm(e, 6), this.unsigned), a = this, i = \"\"; ; ) {\n var p = a.div(s), u = a.sub(p.mul(s)).toInt() >>> 0, c = u.toString(e);\n if (a = p, a.isZero())\n return c + i;\n for (; c.length < 6; )\n c = \"0\" + c;\n i = \"\" + c + i;\n }\n };\n de.getHighBits = function() {\n return this.high;\n };\n de.getHighBitsUnsigned = function() {\n return this.high >>> 0;\n };\n de.getLowBits = function() {\n return this.low;\n };\n de.getLowBitsUnsigned = function() {\n return this.low >>> 0;\n };\n de.getNumBitsAbs = function() {\n if (this.isNegative())\n return this.eq(Pr) ? 64 : this.neg().getNumBitsAbs();\n for (var e = this.high != 0 ? this.high : this.low, t10 = 31; t10 > 0 && !(e & 1 << t10); t10--)\n ;\n return this.high != 0 ? t10 + 33 : t10 + 1;\n };\n de.isZero = function() {\n return this.high === 0 && this.low === 0;\n };\n de.eqz = de.isZero;\n de.isNegative = function() {\n return !this.unsigned && this.high < 0;\n };\n de.isPositive = function() {\n return this.unsigned || this.high >= 0;\n };\n de.isOdd = function() {\n return (this.low & 1) === 1;\n };\n de.isEven = function() {\n return (this.low & 1) === 0;\n };\n de.equals = function(e) {\n return Mr(e) || (e = rs(e)), this.unsigned !== e.unsigned && this.high >>> 31 === 1 && e.high >>> 31 === 1 ? false : this.high === e.high && this.low === e.low;\n };\n de.eq = de.equals;\n de.notEquals = function(e) {\n return !this.eq(e);\n };\n de.neq = de.notEquals;\n de.ne = de.notEquals;\n de.lessThan = function(e) {\n return this.comp(e) < 0;\n };\n de.lt = de.lessThan;\n de.lessThanOrEqual = function(e) {\n return this.comp(e) <= 0;\n };\n de.lte = de.lessThanOrEqual;\n de.le = de.lessThanOrEqual;\n de.greaterThan = function(e) {\n return this.comp(e) > 0;\n };\n de.gt = de.greaterThan;\n de.greaterThanOrEqual = function(e) {\n return this.comp(e) >= 0;\n };\n de.gte = de.greaterThanOrEqual;\n de.ge = de.greaterThanOrEqual;\n de.compare = function(e) {\n if (Mr(e) || (e = rs(e)), this.eq(e))\n return 0;\n var t10 = this.isNegative(), o = e.isNegative();\n return t10 && !o ? -1 : !t10 && o ? 1 : this.unsigned ? e.high >>> 0 > this.high >>> 0 || e.high === this.high && e.low >>> 0 > this.low >>> 0 ? -1 : 1 : this.sub(e).isNegative() ? -1 : 1;\n };\n de.comp = de.compare;\n de.negate = function() {\n return !this.unsigned && this.eq(Pr) ? Pr : this.not().add($p);\n };\n de.neg = de.negate;\n de.add = function(e) {\n Mr(e) || (e = rs(e));\n var t10 = this.high >>> 16, o = this.high & 65535, n = this.low >>> 16, s = this.low & 65535, a = e.high >>> 16, i = e.high & 65535, p = e.low >>> 16, u = e.low & 65535, c = 0, l = 0, m = 0, d = 0;\n return d += s + u, m += d >>> 16, d &= 65535, m += n + p, l += m >>> 16, m &= 65535, l += o + i, c += l >>> 16, l &= 65535, c += t10 + a, c &= 65535, vt(m << 16 | d, c << 16 | l, this.unsigned);\n };\n de.subtract = function(e) {\n return Mr(e) || (e = rs(e)), this.add(e.neg());\n };\n de.sub = de.subtract;\n de.multiply = function(e) {\n if (this.isZero())\n return Co;\n if (Mr(e) || (e = rs(e)), yo) {\n var t10 = yo.mul(this.low, this.high, e.low, e.high);\n return vt(t10, yo.get_high(), this.unsigned);\n }\n if (e.isZero())\n return Co;\n if (this.eq(Pr))\n return e.isOdd() ? Pr : Co;\n if (e.eq(Pr))\n return this.isOdd() ? Pr : Co;\n if (this.isNegative())\n return e.isNegative() ? this.neg().mul(e.neg()) : this.neg().mul(e).neg();\n if (e.isNegative())\n return this.mul(e.neg()).neg();\n if (this.lt(t0) && e.lt(t0))\n return bo(this.toNumber() * e.toNumber(), this.unsigned);\n var o = this.high >>> 16, n = this.high & 65535, s = this.low >>> 16, a = this.low & 65535, i = e.high >>> 16, p = e.high & 65535, u = e.low >>> 16, c = e.low & 65535, l = 0, m = 0, d = 0, f = 0;\n return f += a * c, d += f >>> 16, f &= 65535, d += s * c, m += d >>> 16, d &= 65535, d += a * u, m += d >>> 16, d &= 65535, m += n * c, l += m >>> 16, m &= 65535, m += s * u, l += m >>> 16, m &= 65535, m += a * p, l += m >>> 16, m &= 65535, l += o * c + n * u + s * p + a * i, l &= 65535, vt(d << 16 | f, l << 16 | m, this.unsigned);\n };\n de.mul = de.multiply;\n de.divide = function(e) {\n if (Mr(e) || (e = rs(e)), e.isZero())\n throw Error(\"division by zero\");\n if (yo) {\n if (!this.unsigned && this.high === -2147483648 && e.low === -1 && e.high === -1)\n return this;\n var t10 = (this.unsigned ? yo.div_u : yo.div_s)(this.low, this.high, e.low, e.high);\n return vt(t10, yo.get_high(), this.unsigned);\n }\n if (this.isZero())\n return this.unsigned ? Ji : Co;\n var o, n, s;\n if (this.unsigned) {\n if (e.unsigned || (e = e.toUnsigned()), e.gt(this))\n return Ji;\n if (e.gt(this.shru(1)))\n return o0;\n s = Ji;\n } else {\n if (this.eq(Pr)) {\n if (e.eq($p) || e.eq(Rb))\n return Pr;\n if (e.eq(Pr))\n return $p;\n var a = this.shr(1);\n return o = a.div(e).shl(1), o.eq(Co) ? e.isNegative() ? $p : Rb : (n = this.sub(e.mul(o)), s = o.add(n.div(e)), s);\n } else if (e.eq(Pr))\n return this.unsigned ? Ji : Co;\n if (this.isNegative())\n return e.isNegative() ? this.neg().div(e.neg()) : this.neg().div(e).neg();\n if (e.isNegative())\n return this.div(e.neg()).neg();\n s = Co;\n }\n for (n = this; n.gte(e); ) {\n o = Math.max(1, Math.floor(n.toNumber() / e.toNumber()));\n for (var i = Math.ceil(Math.log(o) / Math.LN2), p = i <= 48 ? 1 : Dm(2, i - 48), u = bo(o), c = u.mul(e); c.isNegative() || c.gt(n); )\n o -= p, u = bo(o, this.unsigned), c = u.mul(e);\n u.isZero() && (u = $p), s = s.add(u), n = n.sub(c);\n }\n return s;\n };\n de.div = de.divide;\n de.modulo = function(e) {\n if (Mr(e) || (e = rs(e)), yo) {\n var t10 = (this.unsigned ? yo.rem_u : yo.rem_s)(this.low, this.high, e.low, e.high);\n return vt(t10, yo.get_high(), this.unsigned);\n }\n return this.sub(this.div(e).mul(e));\n };\n de.mod = de.modulo;\n de.rem = de.modulo;\n de.not = function() {\n return vt(~this.low, ~this.high, this.unsigned);\n };\n de.and = function(e) {\n return Mr(e) || (e = rs(e)), vt(this.low & e.low, this.high & e.high, this.unsigned);\n };\n de.or = function(e) {\n return Mr(e) || (e = rs(e)), vt(this.low | e.low, this.high | e.high, this.unsigned);\n };\n de.xor = function(e) {\n return Mr(e) || (e = rs(e)), vt(this.low ^ e.low, this.high ^ e.high, this.unsigned);\n };\n de.shiftLeft = function(e) {\n return Mr(e) && (e = e.toInt()), (e &= 63) === 0 ? this : e < 32 ? vt(this.low << e, this.high << e | this.low >>> 32 - e, this.unsigned) : vt(0, this.low << e - 32, this.unsigned);\n };\n de.shl = de.shiftLeft;\n de.shiftRight = function(e) {\n return Mr(e) && (e = e.toInt()), (e &= 63) === 0 ? this : e < 32 ? vt(this.low >>> e | this.high << 32 - e, this.high >> e, this.unsigned) : vt(this.high >> e - 32, this.high >= 0 ? 0 : -1, this.unsigned);\n };\n de.shr = de.shiftRight;\n de.shiftRightUnsigned = function(e) {\n if (Mr(e) && (e = e.toInt()), e &= 63, e === 0)\n return this;\n var t10 = this.high;\n if (e < 32) {\n var o = this.low;\n return vt(o >>> e | t10 << 32 - e, t10 >>> e, this.unsigned);\n } else\n return e === 32 ? vt(t10, 0, this.unsigned) : vt(t10 >>> e - 32, 0, this.unsigned);\n };\n de.shru = de.shiftRightUnsigned;\n de.shr_u = de.shiftRightUnsigned;\n de.toSigned = function() {\n return this.unsigned ? vt(this.low, this.high, false) : this;\n };\n de.toUnsigned = function() {\n return this.unsigned ? this : vt(this.low, this.high, true);\n };\n de.toBytes = function(e) {\n return e ? this.toBytesLE() : this.toBytesBE();\n };\n de.toBytesLE = function() {\n var e = this.high, t10 = this.low;\n return [t10 & 255, t10 >>> 8 & 255, t10 >>> 16 & 255, t10 >>> 24, e & 255, e >>> 8 & 255, e >>> 16 & 255, e >>> 24];\n };\n de.toBytesBE = function() {\n var e = this.high, t10 = this.low;\n return [e >>> 24, e >>> 16 & 255, e >>> 8 & 255, e & 255, t10 >>> 24, t10 >>> 16 & 255, t10 >>> 8 & 255, t10 & 255];\n };\n It.fromBytes = function(e, t10, o) {\n return o ? It.fromBytesLE(e, t10) : It.fromBytesBE(e, t10);\n };\n It.fromBytesLE = function(e, t10) {\n return new It(e[0] | e[1] << 8 | e[2] << 16 | e[3] << 24, e[4] | e[5] << 8 | e[6] << 16 | e[7] << 24, t10);\n };\n It.fromBytesBE = function(e, t10) {\n return new It(e[4] << 24 | e[5] << 16 | e[6] << 8 | e[7], e[0] << 24 | e[1] << 16 | e[2] << 8 | e[3], t10);\n };\n});\nvar W0 = Kt(() => {\n});\nvar U0 = Kt(() => {\n});\nvar gk = Kt((hk, cC) => {\n (function(r, e, t10) {\n function o(i) {\n var p = this, u = a();\n p.next = function() {\n var c = 2091639 * p.s0 + p.c * 23283064365386963e-26;\n return p.s0 = p.s1, p.s1 = p.s2, p.s2 = c - (p.c = c | 0);\n }, p.c = 1, p.s0 = u(\" \"), p.s1 = u(\" \"), p.s2 = u(\" \"), p.s0 -= u(i), p.s0 < 0 && (p.s0 += 1), p.s1 -= u(i), p.s1 < 0 && (p.s1 += 1), p.s2 -= u(i), p.s2 < 0 && (p.s2 += 1), u = null;\n }\n function n(i, p) {\n return p.c = i.c, p.s0 = i.s0, p.s1 = i.s1, p.s2 = i.s2, p;\n }\n function s(i, p) {\n var u = new o(i), c = p && p.state, l = u.next;\n return l.int32 = function() {\n return u.next() * 4294967296 | 0;\n }, l.double = function() {\n return l() + (l() * 2097152 | 0) * 11102230246251565e-32;\n }, l.quick = l, c && (typeof c == \"object\" && n(c, u), l.state = function() {\n return n(u, {});\n }), l;\n }\n function a() {\n var i = 4022871197, p = function(u) {\n u = String(u);\n for (var c = 0; c < u.length; c++) {\n i += u.charCodeAt(c);\n var l = 0.02519603282416938 * i;\n i = l >>> 0, l -= i, l *= i, i = l >>> 0, l -= i, i += l * 4294967296;\n }\n return (i >>> 0) * 23283064365386963e-26;\n };\n return p;\n }\n e && e.exports ? e.exports = s : t10 && t10.amd ? t10(function() {\n return s;\n }) : this.alea = s;\n })(hk, typeof cC == \"object\" && cC, typeof define == \"function\" && define);\n});\nvar yk = Kt((xk, lC) => {\n (function(r, e, t10) {\n function o(a) {\n var i = this, p = \"\";\n i.x = 0, i.y = 0, i.z = 0, i.w = 0, i.next = function() {\n var c = i.x ^ i.x << 11;\n return i.x = i.y, i.y = i.z, i.z = i.w, i.w ^= i.w >>> 19 ^ c ^ c >>> 8;\n }, a === (a | 0) ? i.x = a : p += a;\n for (var u = 0; u < p.length + 64; u++)\n i.x ^= p.charCodeAt(u) | 0, i.next();\n }\n function n(a, i) {\n return i.x = a.x, i.y = a.y, i.z = a.z, i.w = a.w, i;\n }\n function s(a, i) {\n var p = new o(a), u = i && i.state, c = function() {\n return (p.next() >>> 0) / 4294967296;\n };\n return c.double = function() {\n do\n var l = p.next() >>> 11, m = (p.next() >>> 0) / 4294967296, d = (l + m) / (1 << 21);\n while (d === 0);\n return d;\n }, c.int32 = p.next, c.quick = c, u && (typeof u == \"object\" && n(u, p), c.state = function() {\n return n(p, {});\n }), c;\n }\n e && e.exports ? e.exports = s : t10 && t10.amd ? t10(function() {\n return s;\n }) : this.xor128 = s;\n })(xk, typeof lC == \"object\" && lC, typeof define == \"function\" && define);\n});\nvar Ck = Kt((bk, mC) => {\n (function(r, e, t10) {\n function o(a) {\n var i = this, p = \"\";\n i.next = function() {\n var c = i.x ^ i.x >>> 2;\n return i.x = i.y, i.y = i.z, i.z = i.w, i.w = i.v, (i.d = i.d + 362437 | 0) + (i.v = i.v ^ i.v << 4 ^ (c ^ c << 1)) | 0;\n }, i.x = 0, i.y = 0, i.z = 0, i.w = 0, i.v = 0, a === (a | 0) ? i.x = a : p += a;\n for (var u = 0; u < p.length + 64; u++)\n i.x ^= p.charCodeAt(u) | 0, u == p.length && (i.d = i.x << 10 ^ i.x >>> 4), i.next();\n }\n function n(a, i) {\n return i.x = a.x, i.y = a.y, i.z = a.z, i.w = a.w, i.v = a.v, i.d = a.d, i;\n }\n function s(a, i) {\n var p = new o(a), u = i && i.state, c = function() {\n return (p.next() >>> 0) / 4294967296;\n };\n return c.double = function() {\n do\n var l = p.next() >>> 11, m = (p.next() >>> 0) / 4294967296, d = (l + m) / (1 << 21);\n while (d === 0);\n return d;\n }, c.int32 = p.next, c.quick = c, u && (typeof u == \"object\" && n(u, p), c.state = function() {\n return n(p, {});\n }), c;\n }\n e && e.exports ? e.exports = s : t10 && t10.amd ? t10(function() {\n return s;\n }) : this.xorwow = s;\n })(bk, typeof mC == \"object\" && mC, typeof define == \"function\" && define);\n});\nvar wk = Kt((Sk, dC) => {\n (function(r, e, t10) {\n function o(a) {\n var i = this;\n i.next = function() {\n var u = i.x, c = i.i, l, m, d;\n return l = u[c], l ^= l >>> 7, m = l ^ l << 24, l = u[c + 1 & 7], m ^= l ^ l >>> 10, l = u[c + 3 & 7], m ^= l ^ l >>> 3, l = u[c + 4 & 7], m ^= l ^ l << 7, l = u[c + 7 & 7], l = l ^ l << 13, m ^= l ^ l << 9, u[c] = m, i.i = c + 1 & 7, m;\n };\n function p(u, c) {\n var l, m, d = [];\n if (c === (c | 0))\n m = d[0] = c;\n else\n for (c = \"\" + c, l = 0; l < c.length; ++l)\n d[l & 7] = d[l & 7] << 15 ^ c.charCodeAt(l) + d[l + 1 & 7] << 13;\n for (; d.length < 8; )\n d.push(0);\n for (l = 0; l < 8 && d[l] === 0; ++l)\n ;\n for (l == 8 ? m = d[7] = -1 : m = d[l], u.x = d, u.i = 0, l = 256; l > 0; --l)\n u.next();\n }\n p(i, a);\n }\n function n(a, i) {\n return i.x = a.x.slice(), i.i = a.i, i;\n }\n function s(a, i) {\n a == null && (a = +/* @__PURE__ */ new Date());\n var p = new o(a), u = i && i.state, c = function() {\n return (p.next() >>> 0) / 4294967296;\n };\n return c.double = function() {\n do\n var l = p.next() >>> 11, m = (p.next() >>> 0) / 4294967296, d = (l + m) / (1 << 21);\n while (d === 0);\n return d;\n }, c.int32 = p.next, c.quick = c, u && (u.x && n(u, p), c.state = function() {\n return n(p, {});\n }), c;\n }\n e && e.exports ? e.exports = s : t10 && t10.amd ? t10(function() {\n return s;\n }) : this.xorshift7 = s;\n })(Sk, typeof dC == \"object\" && dC, typeof define == \"function\" && define);\n});\nvar vk = Kt((Ik, fC) => {\n (function(r, e, t10) {\n function o(a) {\n var i = this;\n i.next = function() {\n var u = i.w, c = i.X, l = i.i, m, d;\n return i.w = u = u + 1640531527 | 0, d = c[l + 34 & 127], m = c[l = l + 1 & 127], d ^= d << 13, m ^= m << 17, d ^= d >>> 15, m ^= m >>> 12, d = c[l] = d ^ m, i.i = l, d + (u ^ u >>> 16) | 0;\n };\n function p(u, c) {\n var l, m, d, f, h, g = [], x = 128;\n for (c === (c | 0) ? (m = c, c = null) : (c = c + \"\\0\", m = 0, x = Math.max(x, c.length)), d = 0, f = -32; f < x; ++f)\n c && (m ^= c.charCodeAt((f + 32) % c.length)), f === 0 && (h = m), m ^= m << 10, m ^= m >>> 15, m ^= m << 4, m ^= m >>> 13, f >= 0 && (h = h + 1640531527 | 0, l = g[f & 127] ^= m + h, d = l == 0 ? d + 1 : 0);\n for (d >= 128 && (g[(c && c.length || 0) & 127] = -1), d = 127, f = 4 * 128; f > 0; --f)\n m = g[d + 34 & 127], l = g[d = d + 1 & 127], m ^= m << 13, l ^= l << 17, m ^= m >>> 15, l ^= l >>> 12, g[d] = m ^ l;\n u.w = h, u.X = g, u.i = d;\n }\n p(i, a);\n }\n function n(a, i) {\n return i.i = a.i, i.w = a.w, i.X = a.X.slice(), i;\n }\n function s(a, i) {\n a == null && (a = +/* @__PURE__ */ new Date());\n var p = new o(a), u = i && i.state, c = function() {\n return (p.next() >>> 0) / 4294967296;\n };\n return c.double = function() {\n do\n var l = p.next() >>> 11, m = (p.next() >>> 0) / 4294967296, d = (l + m) / (1 << 21);\n while (d === 0);\n return d;\n }, c.int32 = p.next, c.quick = c, u && (u.X && n(u, p), c.state = function() {\n return n(p, {});\n }), c;\n }\n e && e.exports ? e.exports = s : t10 && t10.amd ? t10(function() {\n return s;\n }) : this.xor4096 = s;\n })(Ik, typeof fC == \"object\" && fC, typeof define == \"function\" && define);\n});\nvar Nk = Kt((kk, hC) => {\n (function(r, e, t10) {\n function o(a) {\n var i = this, p = \"\";\n i.next = function() {\n var c = i.b, l = i.c, m = i.d, d = i.a;\n return c = c << 25 ^ c >>> 7 ^ l, l = l - m | 0, m = m << 24 ^ m >>> 8 ^ d, d = d - c | 0, i.b = c = c << 20 ^ c >>> 12 ^ l, i.c = l = l - m | 0, i.d = m << 16 ^ l >>> 16 ^ d, i.a = d - c | 0;\n }, i.a = 0, i.b = 0, i.c = -1640531527, i.d = 1367130551, a === Math.floor(a) ? (i.a = a / 4294967296 | 0, i.b = a | 0) : p += a;\n for (var u = 0; u < p.length + 20; u++)\n i.b ^= p.charCodeAt(u) | 0, i.next();\n }\n function n(a, i) {\n return i.a = a.a, i.b = a.b, i.c = a.c, i.d = a.d, i;\n }\n function s(a, i) {\n var p = new o(a), u = i && i.state, c = function() {\n return (p.next() >>> 0) / 4294967296;\n };\n return c.double = function() {\n do\n var l = p.next() >>> 11, m = (p.next() >>> 0) / 4294967296, d = (l + m) / (1 << 21);\n while (d === 0);\n return d;\n }, c.int32 = p.next, c.quick = c, u && (typeof u == \"object\" && n(u, p), c.state = function() {\n return n(p, {});\n }), c;\n }\n e && e.exports ? e.exports = s : t10 && t10.amd ? t10(function() {\n return s;\n }) : this.tychei = s;\n })(kk, typeof hC == \"object\" && hC, typeof define == \"function\" && define);\n});\nvar Tk = Kt(() => {\n});\nvar $k = Kt((_k, yd) => {\n (function(r, e, t10) {\n var o = 256, n = 6, s = 52, a = \"random\", i = t10.pow(o, n), p = t10.pow(2, s), u = p * 2, c = o - 1, l;\n function m(C, w, k) {\n var _ = [];\n w = w == true ? { entropy: true } : w || {};\n var E = g(h(w.entropy ? [C, b(e)] : C == null ? x() : C, 3), _), A = new d(_), R = function() {\n for (var D = A.g(n), P = i, M = 0; D < p; )\n D = (D + M) * o, P *= o, M = A.g(1);\n for (; D >= u; )\n D /= 2, P /= 2, M >>>= 1;\n return (D + M) / P;\n };\n return R.int32 = function() {\n return A.g(4) | 0;\n }, R.quick = function() {\n return A.g(4) / 4294967296;\n }, R.double = R, g(b(A.S), e), (w.pass || k || function(D, P, M, L) {\n return L && (L.S && f(L, A), D.state = function() {\n return f(A, {});\n }), M ? (t10[a] = D, P) : D;\n })(R, E, \"global\" in w ? w.global : this == t10, w.state);\n }\n function d(C) {\n var w, k = C.length, _ = this, E = 0, A = _.i = _.j = 0, R = _.S = [];\n for (k || (C = [k++]); E < o; )\n R[E] = E++;\n for (E = 0; E < o; E++)\n R[E] = R[A = c & A + C[E % k] + (w = R[E])], R[A] = w;\n (_.g = function(D) {\n for (var P, M = 0, L = _.i, V = _.j, z = _.S; D--; )\n P = z[L = c & L + 1], M = M * o + z[c & (z[L] = z[V = c & V + P]) + (z[V] = P)];\n return _.i = L, _.j = V, M;\n })(o);\n }\n function f(C, w) {\n return w.i = C.i, w.j = C.j, w.S = C.S.slice(), w;\n }\n function h(C, w) {\n var k = [], _ = typeof C, E;\n if (w && _ == \"object\")\n for (E in C)\n try {\n k.push(h(C[E], w - 1));\n } catch (A) {\n }\n return k.length ? k : _ == \"string\" ? C : C + \"\\0\";\n }\n function g(C, w) {\n for (var k = C + \"\", _, E = 0; E < k.length; )\n w[c & E] = c & (_ ^= w[c & E] * 19) + k.charCodeAt(E++);\n return b(w);\n }\n function x() {\n try {\n var C;\n return l && (C = l.randomBytes) ? C = C(o) : (C = new Uint8Array(o), (r.crypto || r.msCrypto).getRandomValues(C)), b(C);\n } catch (_) {\n var w = r.navigator, k = w && w.plugins;\n return [+/* @__PURE__ */ new Date(), r, k, r.screen, b(e)];\n }\n }\n function b(C) {\n return String.fromCharCode.apply(0, C);\n }\n if (g(t10.random(), e), typeof yd == \"object\" && yd.exports) {\n yd.exports = m;\n try {\n l = Tk();\n } catch (C) {\n }\n } else\n typeof define == \"function\" && define.amd ? define(function() {\n return m;\n }) : t10[\"seed\" + a] = m;\n })(typeof self != \"undefined\" ? self : _k, [], Math);\n});\nvar gC = Kt((QSe, Ek) => {\n var P4 = gk(), M4 = yk(), L4 = Ck(), B4 = wk(), V4 = vk(), z4 = Nk(), lu = $k();\n lu.alea = P4;\n lu.xor128 = M4;\n lu.xorwow = L4;\n lu.xorshift7 = B4;\n lu.xor4096 = V4;\n lu.tychei = z4;\n Ek.exports = lu;\n});\nvar oI = Kt(() => {\n});\nvar nI = Kt(() => {\n});\nvar x3 = Kt(() => {\n});\nvar y3 = Kt(() => {\n});\nvar b3 = Kt(() => {\n});\nvar C3 = Kt((wg, aI) => {\n var sI = (() => {\n var r = typeof document != \"undefined\" && document.currentScript ? document.currentScript.src : void 0;\n return typeof __filename != \"undefined\" && (r = r || __filename), function(e) {\n e = e || {};\n function t10() {\n return te.buffer != ze && Nt(te.buffer), ct;\n }\n function o() {\n return te.buffer != ze && Nt(te.buffer), at;\n }\n function n() {\n return te.buffer != ze && Nt(te.buffer), ft;\n }\n function s() {\n return te.buffer != ze && Nt(te.buffer), Rr;\n }\n function a() {\n return te.buffer != ze && Nt(te.buffer), Pt;\n }\n function i() {\n return te.buffer != ze && Nt(te.buffer), qr;\n }\n function p() {\n return te.buffer != ze && Nt(te.buffer), er;\n }\n var u = typeof e != \"undefined\" ? e : {}, c, l;\n u.ready = new Promise(function(F, B) {\n c = F, l = B;\n });\n var m;\n typeof process != \"undefined\" && process.listeners && (m = { uncaughtException: process.listeners(\"uncaughtException\"), unhandledRejection: process.listeners(\"unhandledRejection\") });\n var d = Object.assign({}, u), f = [], h = \"./this.program\", g = (F, B) => {\n throw B;\n }, x = typeof window == \"object\", b = typeof importScripts == \"function\", C = typeof process == \"object\" && typeof process.versions == \"object\" && typeof process.versions.node == \"string\", w = u.ENVIRONMENT_IS_PTHREAD || false, k = \"\";\n function _(F) {\n return u.locateFile ? u.locateFile(F, k) : k + F;\n }\n var E, A, R, D;\n function P(F) {\n if (F instanceof qi)\n return;\n K(\"exiting due to exception: \" + F);\n }\n if (C) {\n var M = oI(), L = nI();\n b ? k = L.dirname(k) + \"/\" : k = __dirname + \"/\", E = (B, ue) => (B = ep(B) ? new URL(B) : L.normalize(B), M.readFileSync(B, ue ? void 0 : \"utf8\")), R = (B) => {\n var ue = E(B, true);\n return ue.buffer || (ue = new Uint8Array(ue)), ue;\n }, A = (B, ue, _e) => {\n B = ep(B) ? new URL(B) : L.normalize(B), M.readFile(B, function(Me, Pe) {\n Me ? _e(Me) : ue(Pe.buffer);\n });\n }, process.argv.length > 1 && (h = process.argv[1].replace(/\\\\/g, \"/\")), f = process.argv.slice(2), process.on(\"uncaughtException\", function(B) {\n if (!(B instanceof qi))\n throw B;\n }), process.on(\"unhandledRejection\", function(B) {\n throw B;\n }), g = (B, ue) => {\n if (Do())\n throw process.exitCode = B, ue;\n P(ue), process.exit(B);\n }, u.inspect = function() {\n return \"[Emscripten Module object]\";\n };\n let F;\n try {\n F = x3();\n } catch (B) {\n throw console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?'), B;\n }\n global.Worker = F.Worker;\n } else\n (x || b) && (b ? k = self.location.href : typeof document != \"undefined\" && document.currentScript && (k = document.currentScript.src), typeof r != \"undefined\" && r && (k = r), k.indexOf(\"blob:\") !== 0 ? k = k.substr(0, k.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1) : k = \"\", C || (E = (F) => {\n var B = new XMLHttpRequest();\n return B.open(\"GET\", F, false), B.send(null), B.responseText;\n }, b && (R = (F) => {\n var B = new XMLHttpRequest();\n return B.open(\"GET\", F, false), B.responseType = \"arraybuffer\", B.send(null), new Uint8Array(B.response);\n }), A = (F, B, ue) => {\n var _e = new XMLHttpRequest();\n _e.open(\"GET\", F, true), _e.responseType = \"arraybuffer\", _e.onload = () => {\n if (_e.status == 200 || _e.status == 0 && _e.response) {\n B(_e.response);\n return;\n }\n ue();\n }, _e.onerror = ue, _e.send(null);\n }), D = (F) => document.title = F);\n C && typeof performance == \"undefined\" && (global.performance = y3().performance);\n var V = console.log.bind(console), z = console.warn.bind(console);\n C && (V = (F) => M.writeSync(1, F + `\n`), z = (F) => M.writeSync(2, F + `\n`));\n var U = u.print || V, K = u.printErr || z;\n Object.assign(u, d), d = null, u.arguments && (f = u.arguments), u.thisProgram && (h = u.thisProgram), u.quit && (g = u.quit);\n var H = 4, q = Atomics.load, Z = Atomics.store, ee = Atomics.compareExchange, oe;\n u.wasmBinary && (oe = u.wasmBinary);\n var J = u.noExitRuntime || true;\n typeof WebAssembly != \"object\" && Ki(\"no native wasm support detected\");\n var te, ie, ce = false, ye;\n function Ne(F, B) {\n F || Ki(B);\n }\n var Ie = typeof TextDecoder != \"undefined\" ? new TextDecoder(\"utf8\") : void 0;\n function Ae(F, B, ue) {\n for (var _e = B + ue, Me = B; F[Me] && !(Me >= _e); )\n ++Me;\n if (Me - B > 16 && F.buffer && Ie)\n return Ie.decode(F.buffer instanceof SharedArrayBuffer ? F.slice(B, Me) : F.subarray(B, Me));\n for (var Pe = \"\"; B < Me; ) {\n var fe = F[B++];\n if (!(fe & 128)) {\n Pe += String.fromCharCode(fe);\n continue;\n }\n var ve = F[B++] & 63;\n if ((fe & 224) == 192) {\n Pe += String.fromCharCode((fe & 31) << 6 | ve);\n continue;\n }\n var Ft = F[B++] & 63;\n if ((fe & 240) == 224 ? fe = (fe & 15) << 12 | ve << 6 | Ft : fe = (fe & 7) << 18 | ve << 12 | Ft << 6 | F[B++] & 63, fe < 65536)\n Pe += String.fromCharCode(fe);\n else {\n var Qr = fe - 65536;\n Pe += String.fromCharCode(55296 | Qr >> 10, 56320 | Qr & 1023);\n }\n }\n return Pe;\n }\n function Re(F, B) {\n return F ? Ae(o(), F, B) : \"\";\n }\n function ot(F, B, ue, _e) {\n if (!(_e > 0))\n return 0;\n for (var Me = ue, Pe = ue + _e - 1, fe = 0; fe < F.length; ++fe) {\n var ve = F.charCodeAt(fe);\n if (ve >= 55296 && ve <= 57343) {\n var Ft = F.charCodeAt(++fe);\n ve = 65536 + ((ve & 1023) << 10) | Ft & 1023;\n }\n if (ve <= 127) {\n if (ue >= Pe)\n break;\n B[ue++] = ve;\n } else if (ve <= 2047) {\n if (ue + 1 >= Pe)\n break;\n B[ue++] = 192 | ve >> 6, B[ue++] = 128 | ve & 63;\n } else if (ve <= 65535) {\n if (ue + 2 >= Pe)\n break;\n B[ue++] = 224 | ve >> 12, B[ue++] = 128 | ve >> 6 & 63, B[ue++] = 128 | ve & 63;\n } else {\n if (ue + 3 >= Pe)\n break;\n B[ue++] = 240 | ve >> 18, B[ue++] = 128 | ve >> 12 & 63, B[ue++] = 128 | ve >> 6 & 63, B[ue++] = 128 | ve & 63;\n }\n }\n return B[ue] = 0, ue - Me;\n }\n function pt(F, B, ue) {\n return ot(F, o(), B, ue);\n }\n var ze, ct, at, ft, ht, Rr, Pt, qr, er;\n w && (ze = u.buffer);\n function Nt(F) {\n ze = F, u.HEAP8 = ct = new Int8Array(F), u.HEAP16 = ft = new Int16Array(F), u.HEAP32 = Rr = new Int32Array(F), u.HEAPU8 = at = new Uint8Array(F), u.HEAPU16 = ht = new Uint16Array(F), u.HEAPU32 = Pt = new Uint32Array(F), u.HEAPF32 = qr = new Float32Array(F), u.HEAPF64 = er = new Float64Array(F);\n }\n var tr = u.INITIAL_MEMORY || 16777216;\n if (w)\n te = u.wasmMemory, ze = u.buffer;\n else if (u.wasmMemory)\n te = u.wasmMemory;\n else if (te = new WebAssembly.Memory({ initial: tr / 65536, maximum: 32768, shared: true }), !(te.buffer instanceof SharedArrayBuffer))\n throw K(\"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\"), C && K(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)\"), Error(\"bad memory\");\n te && (ze = te.buffer), tr = ze.byteLength, Nt(ze);\n var rr, jr = [], Xr = [], cr = [], ea = false;\n function Do() {\n return J;\n }\n function hs() {\n if (u.preRun)\n for (typeof u.preRun == \"function\" && (u.preRun = [u.preRun]); u.preRun.length; )\n Dc(u.preRun.shift());\n Pc(jr);\n }\n function qt() {\n ea = true, !w && Pc(Xr);\n }\n function ta() {\n if (!w) {\n if (u.postRun)\n for (typeof u.postRun == \"function\" && (u.postRun = [u.postRun]); u.postRun.length; )\n AI(u.postRun.shift());\n Pc(cr);\n }\n }\n function Dc(F) {\n jr.unshift(F);\n }\n function Fc(F) {\n Xr.unshift(F);\n }\n function AI(F) {\n cr.unshift(F);\n }\n var Ya = 0, Ju = null, ra = null;\n function Rx(F) {\n Ya++, u.monitorRunDependencies && u.monitorRunDependencies(Ya);\n }\n function Yl(F) {\n if (Ya--, u.monitorRunDependencies && u.monitorRunDependencies(Ya), Ya == 0 && (Ju !== null && (clearInterval(Ju), Ju = null), ra)) {\n var B = ra;\n ra = null, B();\n }\n }\n function Ki(F) {\n u.onAbort && u.onAbort(F), F = \"Aborted(\" + F + \")\", K(F), ce = true, ye = 1, F += \". Build with -sASSERTIONS for more info.\";\n var B = new WebAssembly.RuntimeError(F);\n throw l(B), B;\n }\n var Dx = \"data:application/octet-stream;base64,\";\n function Ql(F) {\n return F.startsWith(Dx);\n }\n function ep(F) {\n return F.startsWith(\"file://\");\n }\n var lr;\n lr = \"tfjs-backend-wasm-threaded-simd.wasm\", Ql(lr) || (lr = _(lr));\n function Zl(F) {\n try {\n if (F == lr && oe)\n return new Uint8Array(oe);\n if (R)\n return R(F);\n throw \"both async and sync fetching of the wasm failed\";\n } catch (B) {\n Ki(B);\n }\n }\n function Fx() {\n if (!oe && (x || b)) {\n if (typeof fetch == \"function\" && !ep(lr))\n return fetch(lr, { credentials: \"same-origin\" }).then(function(F) {\n if (!F.ok)\n throw \"failed to load wasm binary file at '\" + lr + \"'\";\n return F.arrayBuffer();\n }).catch(function() {\n return Zl(lr);\n });\n if (A)\n return new Promise(function(F, B) {\n A(lr, function(ue) {\n F(new Uint8Array(ue));\n }, B);\n });\n }\n return Promise.resolve().then(function() {\n return Zl(lr);\n });\n }\n function Ox() {\n var F = { env: lm, wasi_snapshot_preview1: lm };\n function B(fe, ve) {\n var Ft = fe.exports;\n if (u.asm = Ft, Gx(u.asm._emscripten_tls_init), rr = u.asm.__indirect_function_table, Fc(u.asm.__wasm_call_ctors), ie = ve, !w) {\n var Qr = Oe.unusedWorkers.length;\n Oe.unusedWorkers.forEach(function(na) {\n Oe.loadWasmModuleToWorker(na, function() {\n --Qr || Yl(\"wasm-instantiate\");\n });\n });\n }\n }\n w || Rx(\"wasm-instantiate\");\n function ue(fe) {\n B(fe.instance, fe.module);\n }\n function _e(fe) {\n return Fx().then(function(ve) {\n return WebAssembly.instantiate(ve, F);\n }).then(function(ve) {\n return ve;\n }).then(fe, function(ve) {\n K(\"failed to asynchronously prepare wasm: \" + ve), Ki(ve);\n });\n }\n function Me() {\n return !oe && typeof WebAssembly.instantiateStreaming == \"function\" && !Ql(lr) && !ep(lr) && !C && typeof fetch == \"function\" ? fetch(lr, { credentials: \"same-origin\" }).then(function(fe) {\n var ve = WebAssembly.instantiateStreaming(fe, F);\n return ve.then(ue, function(Ft) {\n return K(\"wasm streaming compile failed: \" + Ft), K(\"falling back to ArrayBuffer instantiation\"), _e(ue);\n });\n }) : _e(ue);\n }\n if (u.instantiateWasm)\n try {\n var Pe = u.instantiateWasm(F, B);\n return Pe;\n } catch (fe) {\n K(\"Module.instantiateWasm callback failed with error: \" + fe), l(fe);\n }\n return Me().catch(l), {};\n }\n var RI, DI, Jl = {};\n function qi(F) {\n this.name = \"ExitStatus\", this.message = \"Program terminated with exit(\" + F + \")\", this.status = F;\n }\n function Px(F) {\n var B = Oe.pthreads[F];\n delete Oe.pthreads[F], B.terminate(), hb(F), Oe.runningWorkers.splice(Oe.runningWorkers.indexOf(B), 1), B.pthread_ptr = 0;\n }\n function Mx(F) {\n var B = Oe.pthreads[F];\n B.postMessage({ cmd: \"cancel\" });\n }\n function Oc(F) {\n var B = Oe.pthreads[F];\n Ne(B), Oe.returnWorkerToPool(B);\n }\n function Lx(F) {\n var B = Oe.getNewWorker();\n if (!B)\n return 6;\n Oe.runningWorkers.push(B), Oe.pthreads[F.pthread_ptr] = B, B.pthread_ptr = F.pthread_ptr;\n var ue = { cmd: \"run\", start_routine: F.startRoutine, arg: F.arg, pthread_ptr: F.pthread_ptr };\n return B.runPthread = () => {\n C && B.ref(), B.postMessage(ue, F.transferList), delete B.runPthread;\n }, B.loaded && B.runPthread(), 0;\n }\n var em = { varargs: void 0, get: function() {\n em.varargs += 4;\n var F = s()[em.varargs - 4 >> 2];\n return F;\n }, getStr: function(F) {\n var B = Re(F);\n return B;\n } };\n function tm(F) {\n if (w)\n return Qa(1, 1, F);\n ye = F, Do() || (Oe.terminateAllThreads(), u.onExit && u.onExit(F), ce = true), g(F, new qi(F));\n }\n function Bx(F, B) {\n if (ye = F, !B && w)\n throw om(F), \"unwind\";\n tm(F);\n }\n var rm = Bx;\n function Vx(F) {\n if (F instanceof qi || F == \"unwind\")\n return ye;\n g(1, F);\n }\n var Oe = { unusedWorkers: [], runningWorkers: [], tlsInitFunctions: [], pthreads: {}, init: function() {\n w ? Oe.initWorker() : Oe.initMainThread();\n }, initMainThread: function() {\n for (var F = 8; F--; )\n Oe.allocateUnusedWorker();\n }, initWorker: function() {\n J = false;\n }, setExitStatus: function(F) {\n ye = F;\n }, terminateAllThreads: function() {\n for (var F of Object.values(Oe.pthreads))\n Oe.returnWorkerToPool(F);\n for (var F of Oe.unusedWorkers)\n F.terminate();\n Oe.unusedWorkers = [];\n }, returnWorkerToPool: function(F) {\n var B = F.pthread_ptr;\n delete Oe.pthreads[B], Oe.unusedWorkers.push(F), Oe.runningWorkers.splice(Oe.runningWorkers.indexOf(F), 1), F.pthread_ptr = 0, C && F.unref(), hb(B);\n }, receiveObjectTransfer: function(F) {\n }, threadInitTLS: function() {\n Oe.tlsInitFunctions.forEach((F) => F());\n }, loadWasmModuleToWorker: function(F, B) {\n F.onmessage = (Pe) => {\n var fe = Pe.data, ve = fe.cmd;\n if (F.pthread_ptr && (Oe.currentProxiedOperationCallerThread = F.pthread_ptr), fe.targetThread && fe.targetThread != xm()) {\n var Ft = Oe.pthreads[fe.targetThread];\n Ft ? Ft.postMessage(fe, fe.transferList) : K('Internal error! Worker sent a message \"' + ve + '\" to target pthread ' + fe.targetThread + \", but that thread no longer exists!\"), Oe.currentProxiedOperationCallerThread = void 0;\n return;\n }\n ve === \"processProxyingQueue\" ? Mc(fe.queue) : ve === \"spawnThread\" ? Lx(fe) : ve === \"cleanupThread\" ? Oc(fe.thread) : ve === \"killThread\" ? Px(fe.thread) : ve === \"cancelThread\" ? Mx(fe.thread) : ve === \"loaded\" ? (F.loaded = true, C && F.unref(), B && B(F), F.runPthread && F.runPthread()) : ve === \"print\" ? U(\"Thread \" + fe.threadId + \": \" + fe.text) : ve === \"printErr\" ? K(\"Thread \" + fe.threadId + \": \" + fe.text) : ve === \"alert\" ? alert(\"Thread \" + fe.threadId + \": \" + fe.text) : fe.target === \"setimmediate\" ? F.postMessage(fe) : ve === \"callHandler\" ? u[fe.handler](...fe.args) : ve && K(\"worker sent an unknown command \" + ve), Oe.currentProxiedOperationCallerThread = void 0;\n }, F.onerror = (Pe) => {\n var fe = \"worker sent an error!\";\n throw K(fe + \" \" + Pe.filename + \":\" + Pe.lineno + \": \" + Pe.message), Pe;\n }, C && (F.on(\"message\", function(Pe) {\n F.onmessage({ data: Pe });\n }), F.on(\"error\", function(Pe) {\n F.onerror(Pe);\n }), F.on(\"detachedExit\", function() {\n }));\n var ue = [], _e = [\"onExit\", \"onAbort\", \"print\", \"printErr\"];\n for (var Me of _e)\n u.hasOwnProperty(Me) && ue.push(Me);\n F.postMessage({ cmd: \"load\", handlers: ue, urlOrBlob: u.mainScriptUrlOrBlob || r, wasmMemory: te, wasmModule: ie });\n }, allocateUnusedWorker: function() {\n var F, B = _(\"tfjs-backend-wasm-threaded-simd.worker.js\");\n F = new Worker(B), Oe.unusedWorkers.push(F);\n }, getNewWorker: function() {\n return Oe.unusedWorkers.length == 0 && (Oe.allocateUnusedWorker(), Oe.loadWasmModuleToWorker(Oe.unusedWorkers[0])), Oe.unusedWorkers.pop();\n } };\n u.PThread = Oe;\n function Pc(F) {\n for (; F.length > 0; )\n F.shift()(u);\n }\n function zx() {\n var F = xm(), B = s()[F + 52 >> 2], ue = s()[F + 56 >> 2], _e = B - ue;\n BI(B, _e), ym(B);\n }\n u.establishStackSpace = zx;\n function om(F) {\n if (w)\n return Qa(2, 0, F);\n try {\n rm(F);\n } catch (B) {\n Vx(B);\n }\n }\n var tp = [];\n function Wx(F) {\n var B = tp[F];\n return B || (F >= tp.length && (tp.length = F + 1), tp[F] = B = rr.get(F)), B;\n }\n function Ux(F, B) {\n var ue = Wx(F)(B);\n Do() ? Oe.setExitStatus(ue) : LI(ue);\n }\n u.invokeEntryPoint = Ux;\n function Gx(F) {\n Oe.tlsInitFunctions.push(F);\n }\n function Hx(F) {\n OI(F, !b, 1, !x), Oe.threadInitTLS();\n }\n function Kx(F) {\n w ? postMessage({ cmd: \"cleanupThread\", thread: F }) : Oc(F);\n }\n function nm(F, B, ue, _e) {\n return w ? Qa(3, 1, F, B, ue, _e) : sm(F, B, ue, _e);\n }\n function sm(F, B, ue, _e) {\n if (typeof SharedArrayBuffer == \"undefined\")\n return K(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\"), 6;\n var Me = [], Pe = 0;\n if (w && (Me.length === 0 || Pe))\n return nm(F, B, ue, _e);\n if (Pe)\n return Pe;\n var fe = { startRoutine: ue, pthread_ptr: F, arg: _e, transferList: Me };\n return w ? (fe.cmd = \"spawnThread\", postMessage(fe, Me), 0) : Lx(fe);\n }\n function qx() {\n return 65536;\n }\n var jx = true;\n function Xx() {\n return jx;\n }\n function Mc(F) {\n Atomics.store(s(), F >> 2, 1), xm() && MI(F), Atomics.compareExchange(s(), F >> 2, 1, 0);\n }\n u.executeNotifiedProxyingQueue = Mc;\n function Yx(F, B, ue, _e) {\n if (F == B)\n setTimeout(() => Mc(_e));\n else if (w)\n postMessage({ targetThread: F, cmd: \"processProxyingQueue\", queue: _e });\n else {\n var Me = Oe.pthreads[F];\n if (!Me)\n return;\n Me.postMessage({ cmd: \"processProxyingQueue\", queue: _e });\n }\n return 1;\n }\n function Qx(F, B, ue) {\n return -1;\n }\n function Zx() {\n Ki(\"\");\n }\n function ji(F) {\n ji.shown || (ji.shown = {}), ji.shown[F] || (ji.shown[F] = 1, C && (F = \"warning: \" + F), K(F));\n }\n function Jx() {\n C || b || ji(\"Blocking on the main thread is very dangerous, see https://emscripten.org/docs/porting/pthreads.html#blocking-on-the-main-browser-thread\");\n }\n function ey() {\n return Date.now();\n }\n function am() {\n return 2147483648;\n }\n function ty() {\n return am();\n }\n var Lc;\n C ? Lc = () => {\n var F = process.hrtime();\n return F[0] * 1e3 + F[1] / 1e6;\n } : Lc = () => performance.timeOrigin + performance.now();\n function ry(F, B, ue) {\n o().copyWithin(F, B, B + ue);\n }\n function oy() {\n return C ? b3().cpus().length : navigator.hardwareConcurrency;\n }\n function ny(F) {\n var B = gb(), ue = F();\n return ym(B), ue;\n }\n function Qa(F, B) {\n var ue = arguments.length - 2, _e = arguments;\n return ny(() => {\n for (var Me = ue, Pe = bm(Me * 8), fe = Pe >> 3, ve = 0; ve < ue; ve++) {\n var Ft = _e[2 + ve];\n p()[fe + ve] = Ft;\n }\n return PI(F, Me, Pe, B);\n });\n }\n var Bc = [];\n function sy(F, B, ue) {\n Bc.length = B;\n for (var _e = ue >> 3, Me = 0; Me < B; Me++)\n Bc[Me] = p()[_e + Me];\n var Pe = F < 0, fe = Pe ? Jl[-F - 1] : fy[F];\n return fe.apply(null, Bc);\n }\n function ay(F) {\n try {\n return te.grow(F - ze.byteLength + 65535 >>> 16), Nt(te.buffer), 1;\n } catch (B) {\n }\n }\n function iy(F) {\n var B = o().length;\n if (F = F >>> 0, F <= B)\n return false;\n var ue = am();\n if (F > ue)\n return false;\n let _e = (Ft, Qr) => Ft + (Qr - Ft % Qr) % Qr;\n for (var Me = 1; Me <= 4; Me *= 2) {\n var Pe = B * (1 + 0.2 / Me);\n Pe = Math.min(Pe, F + 100663296);\n var fe = Math.min(ue, _e(Math.max(F, Pe), 65536)), ve = ay(fe);\n if (ve)\n return true;\n }\n return false;\n }\n function uy() {\n throw \"unwind\";\n }\n function im(F) {\n return w ? Qa(4, 1, F) : 52;\n }\n function um(F, B, ue, _e, Me) {\n return w ? Qa(5, 1, F, B, ue, _e, Me) : 70;\n }\n var py = [null, [], []];\n function cy(F, B) {\n var ue = py[F];\n B === 0 || B === 10 ? ((F === 1 ? U : K)(Ae(ue, 0)), ue.length = 0) : ue.push(B);\n }\n function pm(F, B, ue, _e) {\n if (w)\n return Qa(6, 1, F, B, ue, _e);\n for (var Me = 0, Pe = 0; Pe < ue; Pe++) {\n var fe = a()[B >> 2], ve = a()[B + 4 >> 2];\n B += 8;\n for (var Ft = 0; Ft < ve; Ft++)\n cy(F, o()[fe + Ft]);\n Me += ve;\n }\n return a()[_e >> 2] = Me, 0;\n }\n function cm(F) {\n var B = u[\"_\" + F];\n return B;\n }\n function ly(F, B) {\n t10().set(F, B);\n }\n function my(F, B, ue, _e, Me) {\n var Pe = { string: (Dr) => {\n var sp = 0;\n if (Dr != null && Dr !== 0) {\n var WI = (Dr.length << 2) + 1;\n sp = bm(WI), pt(Dr, sp, WI);\n }\n return sp;\n }, array: (Dr) => {\n var sp = bm(Dr.length);\n return ly(Dr, sp), sp;\n } };\n function fe(Dr) {\n return B === \"string\" ? Re(Dr) : B === \"boolean\" ? Boolean(Dr) : Dr;\n }\n var ve = cm(F), Ft = [], Qr = 0;\n if (_e)\n for (var na = 0; na < _e.length; na++) {\n var zI = Pe[ue[na]];\n zI ? (Qr === 0 && (Qr = gb()), Ft[na] = zI(_e[na])) : Ft[na] = _e[na];\n }\n var xb = ve.apply(null, Ft);\n function OV(Dr) {\n return Qr !== 0 && ym(Qr), fe(Dr);\n }\n return xb = OV(xb), xb;\n }\n function dy(F, B, ue, _e) {\n ue = ue || [];\n var Me = ue.every((fe) => fe === \"number\" || fe === \"boolean\"), Pe = B !== \"string\";\n return Pe && Me && !_e ? cm(F) : function() {\n return my(F, B, ue, arguments, _e);\n };\n }\n Oe.init();\n var fy = [null, tm, om, nm, im, um, pm], lm = { __emscripten_init_main_thread_js: Hx, __emscripten_thread_cleanup: Kx, __pthread_create_js: sm, _emscripten_default_pthread_stack_size: qx, _emscripten_get_now_is_monotonic: Xx, _emscripten_notify_task_queue: Yx, _emscripten_set_offscreencanvas_size: Qx, abort: Zx, emscripten_check_blocking_allowed: Jx, emscripten_date_now: ey, emscripten_get_heap_max: ty, emscripten_get_now: Lc, emscripten_memcpy_big: ry, emscripten_num_logical_cores: oy, emscripten_receive_on_main_thread_js: sy, emscripten_resize_heap: iy, emscripten_unwind_to_js_event_loop: uy, exit: rm, fd_close: im, fd_seek: um, fd_write: pm, memory: te || u.wasmMemory }, FI = Ox(), hy = u.___wasm_call_ctors = function() {\n return (hy = u.___wasm_call_ctors = u.asm.__wasm_call_ctors).apply(null, arguments);\n }, gy = u._init = function() {\n return (gy = u._init = u.asm.init).apply(null, arguments);\n }, xy = u._init_with_threads_count = function() {\n return (xy = u._init_with_threads_count = u.asm.init_with_threads_count).apply(null, arguments);\n }, yy = u._get_threads_count = function() {\n return (yy = u._get_threads_count = u.asm.get_threads_count).apply(null, arguments);\n }, by = u._register_tensor = function() {\n return (by = u._register_tensor = u.asm.register_tensor).apply(null, arguments);\n }, Cy = u._dispose_data = function() {\n return (Cy = u._dispose_data = u.asm.dispose_data).apply(null, arguments);\n }, Sy = u._dispose = function() {\n return (Sy = u._dispose = u.asm.dispose).apply(null, arguments);\n }, wy = u._Abs = function() {\n return (wy = u._Abs = u.asm.Abs).apply(null, arguments);\n }, Iy = u._Add = function() {\n return (Iy = u._Add = u.asm.Add).apply(null, arguments);\n }, vy = u._AddN = function() {\n return (vy = u._AddN = u.asm.AddN).apply(null, arguments);\n }, ky = u._All = function() {\n return (ky = u._All = u.asm.All).apply(null, arguments);\n }, Ny = u._Any = function() {\n return (Ny = u._Any = u.asm.Any).apply(null, arguments);\n }, Ty = u._ArgMax = function() {\n return (Ty = u._ArgMax = u.asm.ArgMax).apply(null, arguments);\n }, _y = u._AvgPool = function() {\n return (_y = u._AvgPool = u.asm.AvgPool).apply(null, arguments);\n }, $y = u._BatchMatMul = function() {\n return ($y = u._BatchMatMul = u.asm.BatchMatMul).apply(null, arguments);\n }, Ey = u._Ceil = function() {\n return (Ey = u._Ceil = u.asm.Ceil).apply(null, arguments);\n }, Ay = u._ClipByValue = function() {\n return (Ay = u._ClipByValue = u.asm.ClipByValue).apply(null, arguments);\n }, Ry = u._Conv2D = function() {\n return (Ry = u._Conv2D = u.asm.Conv2D).apply(null, arguments);\n }, Dy = u._Conv2DBackpropInput = function() {\n return (Dy = u._Conv2DBackpropInput = u.asm.Conv2DBackpropInput).apply(null, arguments);\n }, Fy = u._Cos = function() {\n return (Fy = u._Cos = u.asm.Cos).apply(null, arguments);\n }, Oy = u._Cosh = function() {\n return (Oy = u._Cosh = u.asm.Cosh).apply(null, arguments);\n }, Py = u._CropAndResize = function() {\n return (Py = u._CropAndResize = u.asm.CropAndResize).apply(null, arguments);\n }, My = u._Cumprod = function() {\n return (My = u._Cumprod = u.asm.Cumprod).apply(null, arguments);\n }, Ly = u._Cumsum = function() {\n return (Ly = u._Cumsum = u.asm.Cumsum).apply(null, arguments);\n }, By = u._DepthToSpace = function() {\n return (By = u._DepthToSpace = u.asm.DepthToSpace).apply(null, arguments);\n }, Vy = u._DepthwiseConv2dNative = function() {\n return (Vy = u._DepthwiseConv2dNative = u.asm.DepthwiseConv2dNative).apply(null, arguments);\n }, zy = u._Elu = function() {\n return (zy = u._Elu = u.asm.Elu).apply(null, arguments);\n }, Wy = u._Equal = function() {\n return (Wy = u._Equal = u.asm.Equal).apply(null, arguments);\n }, Uy = u._Exp = function() {\n return (Uy = u._Exp = u.asm.Exp).apply(null, arguments);\n }, Gy = u._FlipLeftRight = function() {\n return (Gy = u._FlipLeftRight = u.asm.FlipLeftRight).apply(null, arguments);\n }, Hy = u._Floor = function() {\n return (Hy = u._Floor = u.asm.Floor).apply(null, arguments);\n }, Ky = u._FloorDiv = function() {\n return (Ky = u._FloorDiv = u.asm.FloorDiv).apply(null, arguments);\n }, qy = u._FusedBatchNorm = function() {\n return (qy = u._FusedBatchNorm = u.asm.FusedBatchNorm).apply(null, arguments);\n }, jy = u._FusedConv2D = function() {\n return (jy = u._FusedConv2D = u.asm.FusedConv2D).apply(null, arguments);\n }, Xy = u._FusedDepthwiseConv2D = function() {\n return (Xy = u._FusedDepthwiseConv2D = u.asm.FusedDepthwiseConv2D).apply(null, arguments);\n }, Yy = u._Gather = function() {\n return (Yy = u._Gather = u.asm.Gather).apply(null, arguments);\n }, Qy = u._GatherNd = function() {\n return (Qy = u._GatherNd = u.asm.GatherNd).apply(null, arguments);\n }, Zy = u._Greater = function() {\n return (Zy = u._Greater = u.asm.Greater).apply(null, arguments);\n }, Jy = u._GreaterEqual = function() {\n return (Jy = u._GreaterEqual = u.asm.GreaterEqual).apply(null, arguments);\n }, eb = u._IsNan = function() {\n return (eb = u._IsNan = u.asm.IsNan).apply(null, arguments);\n }, tb = u._LeakyRelu = function() {\n return (tb = u._LeakyRelu = u.asm.LeakyRelu).apply(null, arguments);\n }, rb = u._Less = function() {\n return (rb = u._Less = u.asm.Less).apply(null, arguments);\n }, ob = u._LessEqual = function() {\n return (ob = u._LessEqual = u.asm.LessEqual).apply(null, arguments);\n }, nb = u._Log = function() {\n return (nb = u._Log = u.asm.Log).apply(null, arguments);\n }, sb = u._LogicalAnd = function() {\n return (sb = u._LogicalAnd = u.asm.LogicalAnd).apply(null, arguments);\n }, ab = u._LogicalNot = function() {\n return (ab = u._LogicalNot = u.asm.LogicalNot).apply(null, arguments);\n }, ib = u._LogicalOr = function() {\n return (ib = u._LogicalOr = u.asm.LogicalOr).apply(null, arguments);\n }, ub = u._LogicalXor = function() {\n return (ub = u._LogicalXor = u.asm.LogicalXor).apply(null, arguments);\n }, pb = u._Max = function() {\n return (pb = u._Max = u.asm.Max).apply(null, arguments);\n }, cb = u._MaxPool = function() {\n return (cb = u._MaxPool = u.asm.MaxPool).apply(null, arguments);\n }, mm = u._Maximum = function() {\n return (mm = u._Maximum = u.asm.Maximum).apply(null, arguments);\n }, dm = u._Mean = function() {\n return (dm = u._Mean = u.asm.Mean).apply(null, arguments);\n }, Vc = u._Min = function() {\n return (Vc = u._Min = u.asm.Min).apply(null, arguments);\n }, lb = u._Minimum = function() {\n return (lb = u._Minimum = u.asm.Minimum).apply(null, arguments);\n }, mb = u._MirrorPad = function() {\n return (mb = u._MirrorPad = u.asm.MirrorPad).apply(null, arguments);\n }, rp = u._Multiply = function() {\n return (rp = u._Multiply = u.asm.Multiply).apply(null, arguments);\n }, fm = u._Neg = function() {\n return (fm = u._Neg = u.asm.Neg).apply(null, arguments);\n }, op = u._NonMaxSuppressionV3 = function() {\n return (op = u._NonMaxSuppressionV3 = u.asm.NonMaxSuppressionV3).apply(null, arguments);\n }, np = u._NonMaxSuppressionV4 = function() {\n return (np = u._NonMaxSuppressionV4 = u.asm.NonMaxSuppressionV4).apply(null, arguments);\n }, db = u._NonMaxSuppressionV5 = function() {\n return (db = u._NonMaxSuppressionV5 = u.asm.NonMaxSuppressionV5).apply(null, arguments);\n }, G = u._NotEqual = function() {\n return (G = u._NotEqual = u.asm.NotEqual).apply(null, arguments);\n }, se = u._OneHot = function() {\n return (se = u._OneHot = u.asm.OneHot).apply(null, arguments);\n }, Te = u._PadV2 = function() {\n return (Te = u._PadV2 = u.asm.PadV2).apply(null, arguments);\n }, nt = u._Pow = function() {\n return (nt = u._Pow = u.asm.Pow).apply(null, arguments);\n }, Tt = u._Prelu = function() {\n return (Tt = u._Prelu = u.asm.Prelu).apply(null, arguments);\n }, _t = u._Prod = function() {\n return (_t = u._Prod = u.asm.Prod).apply(null, arguments);\n }, qe = u._RealDiv = function() {\n return (qe = u._RealDiv = u.asm.RealDiv).apply(null, arguments);\n }, Ue = u._Reciprocal = function() {\n return (Ue = u._Reciprocal = u.asm.Reciprocal).apply(null, arguments);\n }, Wt = u._Relu = function() {\n return (Wt = u._Relu = u.asm.Relu).apply(null, arguments);\n }, Yr = u._Relu6 = function() {\n return (Yr = u._Relu6 = u.asm.Relu6).apply(null, arguments);\n }, oa = u._ResizeBilinear = function() {\n return (oa = u._ResizeBilinear = u.asm.ResizeBilinear).apply(null, arguments);\n }, hm = u._ResizeNearestNeighbor = function() {\n return (hm = u._ResizeNearestNeighbor = u.asm.ResizeNearestNeighbor).apply(null, arguments);\n }, zc = u._Reverse = function() {\n return (zc = u._Reverse = u.asm.Reverse).apply(null, arguments);\n }, fb = u._RotateWithOffset = function() {\n return (fb = u._RotateWithOffset = u.asm.RotateWithOffset).apply(null, arguments);\n }, hr = u._Round = function() {\n return (hr = u._Round = u.asm.Round).apply(null, arguments);\n }, Za = u._Rsqrt = function() {\n return (Za = u._Rsqrt = u.asm.Rsqrt).apply(null, arguments);\n }, gm = u._ScatterNd = function() {\n return (gm = u._ScatterNd = u.asm.ScatterNd).apply(null, arguments);\n }, oV = u._SelectV2 = function() {\n return (oV = u._SelectV2 = u.asm.SelectV2).apply(null, arguments);\n }, nV = u._Sigmoid = function() {\n return (nV = u._Sigmoid = u.asm.Sigmoid).apply(null, arguments);\n }, sV = u._Sin = function() {\n return (sV = u._Sin = u.asm.Sin).apply(null, arguments);\n }, aV = u._Softmax = function() {\n return (aV = u._Softmax = u.asm.Softmax).apply(null, arguments);\n }, iV = u._SparseFillEmptyRows = function() {\n return (iV = u._SparseFillEmptyRows = u.asm.SparseFillEmptyRows).apply(null, arguments);\n }, uV = u._SparseReshape = function() {\n return (uV = u._SparseReshape = u.asm.SparseReshape).apply(null, arguments);\n }, pV = u._SparseSegmentReduction = function() {\n return (pV = u._SparseSegmentReduction = u.asm.SparseSegmentReduction).apply(null, arguments);\n }, cV = u._Sqrt = function() {\n return (cV = u._Sqrt = u.asm.Sqrt).apply(null, arguments);\n }, lV = u._Square = function() {\n return (lV = u._Square = u.asm.Square).apply(null, arguments);\n }, mV = u._SquaredDifference = function() {\n return (mV = u._SquaredDifference = u.asm.SquaredDifference).apply(null, arguments);\n }, dV = u._Step = function() {\n return (dV = u._Step = u.asm.Step).apply(null, arguments);\n }, fV = u._StridedSlice = function() {\n return (fV = u._StridedSlice = u.asm.StridedSlice).apply(null, arguments);\n }, hV = u._Sub = function() {\n return (hV = u._Sub = u.asm.Sub).apply(null, arguments);\n }, gV = u._Sum = function() {\n return (gV = u._Sum = u.asm.Sum).apply(null, arguments);\n }, xV = u._Tan = function() {\n return (xV = u._Tan = u.asm.Tan).apply(null, arguments);\n }, yV = u._Tanh = function() {\n return (yV = u._Tanh = u.asm.Tanh).apply(null, arguments);\n }, bV = u._Tile = function() {\n return (bV = u._Tile = u.asm.Tile).apply(null, arguments);\n }, CV = u._TopK = function() {\n return (CV = u._TopK = u.asm.TopK).apply(null, arguments);\n }, SV = u._Transform = function() {\n return (SV = u._Transform = u.asm.Transform).apply(null, arguments);\n }, wV = u._Transpose = function() {\n return (wV = u._Transpose = u.asm.Transpose).apply(null, arguments);\n }, IV = u.__FusedMatMul = function() {\n return (IV = u.__FusedMatMul = u.asm._FusedMatMul).apply(null, arguments);\n }, vV = u._malloc = function() {\n return (vV = u._malloc = u.asm.malloc).apply(null, arguments);\n }, kV = u._free = function() {\n return (kV = u._free = u.asm.free).apply(null, arguments);\n }, NV = u.__emscripten_tls_init = function() {\n return (NV = u.__emscripten_tls_init = u.asm._emscripten_tls_init).apply(null, arguments);\n }, xm = u._pthread_self = function() {\n return (xm = u._pthread_self = u.asm.pthread_self).apply(null, arguments);\n }, TV = u.___errno_location = function() {\n return (TV = u.___errno_location = u.asm.__errno_location).apply(null, arguments);\n }, OI = u.__emscripten_thread_init = function() {\n return (OI = u.__emscripten_thread_init = u.asm._emscripten_thread_init).apply(null, arguments);\n }, _V = u.__emscripten_thread_crashed = function() {\n return (_V = u.__emscripten_thread_crashed = u.asm._emscripten_thread_crashed).apply(null, arguments);\n }, $V = u._emscripten_main_thread_process_queued_calls = function() {\n return ($V = u._emscripten_main_thread_process_queued_calls = u.asm.emscripten_main_thread_process_queued_calls).apply(null, arguments);\n }, EV = u._emscripten_main_browser_thread_id = function() {\n return (EV = u._emscripten_main_browser_thread_id = u.asm.emscripten_main_browser_thread_id).apply(null, arguments);\n }, PI = u._emscripten_run_in_main_runtime_thread_js = function() {\n return (PI = u._emscripten_run_in_main_runtime_thread_js = u.asm.emscripten_run_in_main_runtime_thread_js).apply(null, arguments);\n }, AV = u._emscripten_dispatch_to_thread_ = function() {\n return (AV = u._emscripten_dispatch_to_thread_ = u.asm.emscripten_dispatch_to_thread_).apply(null, arguments);\n }, MI = u.__emscripten_proxy_execute_task_queue = function() {\n return (MI = u.__emscripten_proxy_execute_task_queue = u.asm._emscripten_proxy_execute_task_queue).apply(null, arguments);\n }, hb = u.__emscripten_thread_free_data = function() {\n return (hb = u.__emscripten_thread_free_data = u.asm._emscripten_thread_free_data).apply(null, arguments);\n }, LI = u.__emscripten_thread_exit = function() {\n return (LI = u.__emscripten_thread_exit = u.asm._emscripten_thread_exit).apply(null, arguments);\n }, BI = u._emscripten_stack_set_limits = function() {\n return (BI = u._emscripten_stack_set_limits = u.asm.emscripten_stack_set_limits).apply(null, arguments);\n }, gb = u.stackSave = function() {\n return (gb = u.stackSave = u.asm.stackSave).apply(null, arguments);\n }, ym = u.stackRestore = function() {\n return (ym = u.stackRestore = u.asm.stackRestore).apply(null, arguments);\n }, bm = u.stackAlloc = function() {\n return (bm = u.stackAlloc = u.asm.stackAlloc).apply(null, arguments);\n }, RV = u.dynCall_iijjiiii = function() {\n return (RV = u.dynCall_iijjiiii = u.asm.dynCall_iijjiiii).apply(null, arguments);\n }, DV = u.dynCall_jiji = function() {\n return (DV = u.dynCall_jiji = u.asm.dynCall_jiji).apply(null, arguments);\n };\n u.keepRuntimeAlive = Do, u.wasmMemory = te, u.cwrap = dy, u.ExitStatus = qi, u.PThread = Oe;\n var Cm;\n ra = function F() {\n Cm || VI(), Cm || (ra = F);\n };\n function VI(F) {\n if (F = F || f, Ya > 0)\n return;\n if (w) {\n c(u), qt(), startWorker(u);\n return;\n }\n if (hs(), Ya > 0)\n return;\n function B() {\n Cm || (Cm = true, u.calledRun = true, !ce && (qt(), c(u), u.onRuntimeInitialized && u.onRuntimeInitialized(), ta()));\n }\n u.setStatus ? (u.setStatus(\"Running...\"), setTimeout(function() {\n setTimeout(function() {\n u.setStatus(\"\");\n }, 1), B();\n }, 1)) : B();\n }\n if (u.preInit)\n for (typeof u.preInit == \"function\" && (u.preInit = [u.preInit]); u.preInit.length > 0; )\n u.preInit.pop()();\n VI();\n var Sm;\n m && (Sm = { uncaughtException: process.listeners(\"uncaughtException\").filter(function(F) {\n return !m.uncaughtException.indexOf(F) > -1;\n }), unhandledRejection: process.listeners(\"unhandledRejection\").filter(function(F) {\n return !m.unhandledRejection.indexOf(F) > -1;\n }) });\n var wm;\n if (typeof WasmBackendModule != \"undefined\")\n wm = WasmBackendModule;\n else if (typeof e != \"undefined\")\n wm = e;\n else\n throw new Error(\"Could not find wasm module in post.js\");\n if (Sm) {\n var FV = wm._dispose;\n wm._dispose = function() {\n FV(), Sm.uncaughtException.forEach(function(F) {\n process.removeListener(\"uncaughtException\", F);\n }), Sm.unhandledRejection.forEach(function(F) {\n process.removeListener(\"unhandledRejection\", F);\n });\n };\n }\n return e.ready;\n };\n })();\n typeof wg == \"object\" && typeof aI == \"object\" ? aI.exports = sI : typeof define == \"function\" && define.amd ? define([], function() {\n return sI;\n }) : typeof wg == \"object\" && (wg.WasmBackendModuleThreadedSimd = sI);\n});\nvar w3 = Kt((a1t, S3) => {\n S3.exports.wasmWorkerContents = `\"use strict\";var Module={};var ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require(\"worker_threads\");var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",data=>onmessage({data:data}));var fs=require(\"fs\");Object.assign(global,{self:global,require:require,Module:Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:function(f){(0,eval)(fs.readFileSync(f,\"utf8\")+\"//# sourceURL=\"+f)},postMessage:function(msg){parentPort.postMessage(msg)},performance:global.performance||{now:function(){return Date.now()}}})}var initializedJS=false;var pendingNotifiedProxyingQueues=[];function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,text+\"\n\");return}console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:Module[\"_pthread_self\"]()})}var err=threadPrintErr;self.alert=threadAlert;Module[\"instantiateWasm\"]=(info,receiveInstance)=>{var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);receiveInstance(instance);Module[\"wasmModule\"]=null;return instance.exports};self.onunhandledrejection=e=>{throw e.reason??e};self.startWorker=instance=>{Module=instance;postMessage({\"cmd\":\"loaded\"})};self.onmessage=e=>{try{if(e.data.cmd===\"load\"){Module[\"wasmModule\"]=e.data.wasmModule;for(const handler of e.data.handlers){Module[handler]=function(){postMessage({cmd:\"callHandler\",handler:handler,args:[...arguments]})}}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)}WasmBackendModuleThreadedSimd(Module)}else if(e.data.cmd===\"run\"){Module[\"__emscripten_thread_init\"](e.data.pthread_ptr,0,0,1);Module[\"establishStackSpace\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].threadInitTLS();if(!initializedJS){pendingNotifiedProxyingQueues.forEach(queue=>{Module[\"executeNotifiedProxyingQueue\"](queue)});pendingNotifiedProxyingQueues=[];initializedJS=true}try{Module[\"invokeEntryPoint\"](e.data.start_routine,e.data.arg)}catch(ex){if(ex!=\"unwind\"){if(ex instanceof Module[\"ExitStatus\"]){if(Module[\"keepRuntimeAlive\"]()){}else{Module[\"__emscripten_thread_exit\"](ex.status)}}else{throw ex}}}}else if(e.data.cmd===\"cancel\"){if(Module[\"_pthread_self\"]()){Module[\"__emscripten_thread_exit\"](-1)}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processProxyingQueue\"){if(initializedJS){Module[\"executeNotifiedProxyingQueue\"](e.data.queue)}else{pendingNotifiedProxyingQueues.push(e.data.queue)}}else if(e.data.cmd){err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){if(Module[\"__emscripten_thread_crashed\"]){Module[\"__emscripten_thread_crashed\"]()}throw ex}};`;\n});\nvar I3 = Kt((Ig, uI) => {\n var iI = (() => {\n var r = typeof document != \"undefined\" && document.currentScript ? document.currentScript.src : void 0;\n return typeof __filename != \"undefined\" && (r = r || __filename), function(e) {\n e = e || {};\n var t10 = typeof e != \"undefined\" ? e : {}, o, n;\n t10.ready = new Promise(function(G, se) {\n o = G, n = se;\n });\n var s;\n typeof process != \"undefined\" && process.listeners && (s = { uncaughtException: process.listeners(\"uncaughtException\"), unhandledRejection: process.listeners(\"unhandledRejection\") });\n var a = Object.assign({}, t10), i = [], p = \"./this.program\", u = (G, se) => {\n throw se;\n }, c = typeof window == \"object\", l = typeof importScripts == \"function\", m = typeof process == \"object\" && typeof process.versions == \"object\" && typeof process.versions.node == \"string\", d = \"\";\n function f(G) {\n return t10.locateFile ? t10.locateFile(G, d) : d + G;\n }\n var h, g, x, b;\n function C(G) {\n if (G instanceof Ju)\n return;\n E(\"exiting due to exception: \" + G);\n }\n if (m) {\n var w = oI(), k = nI();\n l ? d = k.dirname(d) + \"/\" : d = __dirname + \"/\", h = (G, se) => (G = hs(G) ? new URL(G) : k.normalize(G), w.readFileSync(G, se ? void 0 : \"utf8\")), x = (G) => {\n var se = h(G, true);\n return se.buffer || (se = new Uint8Array(se)), se;\n }, g = (G, se, Te) => {\n G = hs(G) ? new URL(G) : k.normalize(G), w.readFile(G, function(nt, Tt) {\n nt ? Te(nt) : se(Tt.buffer);\n });\n }, process.argv.length > 1 && (p = process.argv[1].replace(/\\\\/g, \"/\")), i = process.argv.slice(2), process.on(\"uncaughtException\", function(G) {\n if (!(G instanceof Ju))\n throw G;\n }), process.on(\"unhandledRejection\", function(G) {\n throw G;\n }), u = (G, se) => {\n if (at())\n throw process.exitCode = G, se;\n C(se), process.exit(G);\n }, t10.inspect = function() {\n return \"[Emscripten Module object]\";\n };\n } else\n (c || l) && (l ? d = self.location.href : typeof document != \"undefined\" && document.currentScript && (d = document.currentScript.src), r && (d = r), d.indexOf(\"blob:\") !== 0 ? d = d.substr(0, d.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1) : d = \"\", h = (G) => {\n var se = new XMLHttpRequest();\n return se.open(\"GET\", G, false), se.send(null), se.responseText;\n }, l && (x = (G) => {\n var se = new XMLHttpRequest();\n return se.open(\"GET\", G, false), se.responseType = \"arraybuffer\", se.send(null), new Uint8Array(se.response);\n }), g = (G, se, Te) => {\n var nt = new XMLHttpRequest();\n nt.open(\"GET\", G, true), nt.responseType = \"arraybuffer\", nt.onload = () => {\n if (nt.status == 200 || nt.status == 0 && nt.response) {\n se(nt.response);\n return;\n }\n Te();\n }, nt.onerror = Te, nt.send(null);\n }, b = (G) => document.title = G);\n var _ = t10.print || console.log.bind(console), E = t10.printErr || console.warn.bind(console);\n Object.assign(t10, a), a = null, t10.arguments && (i = t10.arguments), t10.thisProgram && (p = t10.thisProgram), t10.quit && (u = t10.quit);\n var A = 4, R;\n t10.wasmBinary && (R = t10.wasmBinary);\n var D = t10.noExitRuntime || true;\n typeof WebAssembly != \"object\" && cr(\"no native wasm support detected\");\n var P, M = false, L;\n function V(G, se) {\n G || cr(se);\n }\n var z = typeof TextDecoder != \"undefined\" ? new TextDecoder(\"utf8\") : void 0;\n function U(G, se, Te) {\n for (var nt = se + Te, Tt = se; G[Tt] && !(Tt >= nt); )\n ++Tt;\n if (Tt - se > 16 && G.buffer && z)\n return z.decode(G.subarray(se, Tt));\n for (var _t = \"\"; se < Tt; ) {\n var qe = G[se++];\n if (!(qe & 128)) {\n _t += String.fromCharCode(qe);\n continue;\n }\n var Ue = G[se++] & 63;\n if ((qe & 224) == 192) {\n _t += String.fromCharCode((qe & 31) << 6 | Ue);\n continue;\n }\n var Wt = G[se++] & 63;\n if ((qe & 240) == 224 ? qe = (qe & 15) << 12 | Ue << 6 | Wt : qe = (qe & 7) << 18 | Ue << 12 | Wt << 6 | G[se++] & 63, qe < 65536)\n _t += String.fromCharCode(qe);\n else {\n var Yr = qe - 65536;\n _t += String.fromCharCode(55296 | Yr >> 10, 56320 | Yr & 1023);\n }\n }\n return _t;\n }\n function K(G, se) {\n return G ? U(oe, G, se) : \"\";\n }\n function H(G, se, Te, nt) {\n if (!(nt > 0))\n return 0;\n for (var Tt = Te, _t = Te + nt - 1, qe = 0; qe < G.length; ++qe) {\n var Ue = G.charCodeAt(qe);\n if (Ue >= 55296 && Ue <= 57343) {\n var Wt = G.charCodeAt(++qe);\n Ue = 65536 + ((Ue & 1023) << 10) | Wt & 1023;\n }\n if (Ue <= 127) {\n if (Te >= _t)\n break;\n se[Te++] = Ue;\n } else if (Ue <= 2047) {\n if (Te + 1 >= _t)\n break;\n se[Te++] = 192 | Ue >> 6, se[Te++] = 128 | Ue & 63;\n } else if (Ue <= 65535) {\n if (Te + 2 >= _t)\n break;\n se[Te++] = 224 | Ue >> 12, se[Te++] = 128 | Ue >> 6 & 63, se[Te++] = 128 | Ue & 63;\n } else {\n if (Te + 3 >= _t)\n break;\n se[Te++] = 240 | Ue >> 18, se[Te++] = 128 | Ue >> 12 & 63, se[Te++] = 128 | Ue >> 6 & 63, se[Te++] = 128 | Ue & 63;\n }\n }\n return se[Te] = 0, Te - Tt;\n }\n function q(G, se, Te) {\n return H(G, oe, se, Te);\n }\n var Z, ee, oe, J, te, ie, ce, ye, Ne;\n function Ie(G) {\n Z = G, t10.HEAP8 = ee = new Int8Array(G), t10.HEAP16 = J = new Int16Array(G), t10.HEAP32 = ie = new Int32Array(G), t10.HEAPU8 = oe = new Uint8Array(G), t10.HEAPU16 = te = new Uint16Array(G), t10.HEAPU32 = ce = new Uint32Array(G), t10.HEAPF32 = ye = new Float32Array(G), t10.HEAPF64 = Ne = new Float64Array(G);\n }\n var Ae = t10.INITIAL_MEMORY || 16777216, Re, ot = [], pt = [], ze = [], ct = false;\n function at() {\n return D;\n }\n function ft() {\n if (t10.preRun)\n for (typeof t10.preRun == \"function\" && (t10.preRun = [t10.preRun]); t10.preRun.length; )\n Pt(t10.preRun.shift());\n ra(ot);\n }\n function ht() {\n ct = true, ra(pt);\n }\n function Rr() {\n if (t10.postRun)\n for (typeof t10.postRun == \"function\" && (t10.postRun = [t10.postRun]); t10.postRun.length; )\n er(t10.postRun.shift());\n ra(ze);\n }\n function Pt(G) {\n ot.unshift(G);\n }\n function qr(G) {\n pt.unshift(G);\n }\n function er(G) {\n ze.unshift(G);\n }\n var Nt = 0, tr = null, rr = null;\n function jr(G) {\n Nt++, t10.monitorRunDependencies && t10.monitorRunDependencies(Nt);\n }\n function Xr(G) {\n if (Nt--, t10.monitorRunDependencies && t10.monitorRunDependencies(Nt), Nt == 0 && (tr !== null && (clearInterval(tr), tr = null), rr)) {\n var se = rr;\n rr = null, se();\n }\n }\n function cr(G) {\n t10.onAbort && t10.onAbort(G), G = \"Aborted(\" + G + \")\", E(G), M = true, L = 1, G += \". Build with -sASSERTIONS for more info.\";\n var se = new WebAssembly.RuntimeError(G);\n throw n(se), se;\n }\n var ea = \"data:application/octet-stream;base64,\";\n function Do(G) {\n return G.startsWith(ea);\n }\n function hs(G) {\n return G.startsWith(\"file://\");\n }\n var qt;\n qt = \"tfjs-backend-wasm.wasm\", Do(qt) || (qt = f(qt));\n function ta(G) {\n try {\n if (G == qt && R)\n return new Uint8Array(R);\n if (x)\n return x(G);\n throw \"both async and sync fetching of the wasm failed\";\n } catch (se) {\n cr(se);\n }\n }\n function Dc() {\n if (!R && (c || l)) {\n if (typeof fetch == \"function\" && !hs(qt))\n return fetch(qt, { credentials: \"same-origin\" }).then(function(G) {\n if (!G.ok)\n throw \"failed to load wasm binary file at '\" + qt + \"'\";\n return G.arrayBuffer();\n }).catch(function() {\n return ta(qt);\n });\n if (g)\n return new Promise(function(G, se) {\n g(qt, function(Te) {\n G(new Uint8Array(Te));\n }, se);\n });\n }\n return Promise.resolve().then(function() {\n return ta(qt);\n });\n }\n function Fc() {\n var G = { env: Oc, wasi_snapshot_preview1: Oc };\n function se(qe, Ue) {\n var Wt = qe.exports;\n t10.asm = Wt, P = t10.asm.memory, Ie(P.buffer), Re = t10.asm.__indirect_function_table, qr(t10.asm.__wasm_call_ctors), Xr(\"wasm-instantiate\");\n }\n jr(\"wasm-instantiate\");\n function Te(qe) {\n se(qe.instance);\n }\n function nt(qe) {\n return Dc().then(function(Ue) {\n return WebAssembly.instantiate(Ue, G);\n }).then(function(Ue) {\n return Ue;\n }).then(qe, function(Ue) {\n E(\"failed to asynchronously prepare wasm: \" + Ue), cr(Ue);\n });\n }\n function Tt() {\n return !R && typeof WebAssembly.instantiateStreaming == \"function\" && !Do(qt) && !hs(qt) && !m && typeof fetch == \"function\" ? fetch(qt, { credentials: \"same-origin\" }).then(function(qe) {\n var Ue = WebAssembly.instantiateStreaming(qe, G);\n return Ue.then(Te, function(Wt) {\n return E(\"wasm streaming compile failed: \" + Wt), E(\"falling back to ArrayBuffer instantiation\"), nt(Te);\n });\n }) : nt(Te);\n }\n if (t10.instantiateWasm)\n try {\n var _t = t10.instantiateWasm(G, se);\n return _t;\n } catch (qe) {\n E(\"Module.instantiateWasm callback failed with error: \" + qe), n(qe);\n }\n return Tt().catch(n), {};\n }\n var AI, Ya;\n function Ju(G) {\n this.name = \"ExitStatus\", this.message = \"Program terminated with exit(\" + G + \")\", this.status = G;\n }\n function ra(G) {\n for (; G.length > 0; )\n G.shift()(t10);\n }\n function Rx() {\n cr(\"\");\n }\n function Yl() {\n return 2147483648;\n }\n function Ki() {\n return Yl();\n }\n function Dx(G, se, Te) {\n oe.copyWithin(G, se, se + Te);\n }\n function Ql(G) {\n try {\n return P.grow(G - Z.byteLength + 65535 >>> 16), Ie(P.buffer), 1;\n } catch (se) {\n }\n }\n function ep(G) {\n var se = oe.length;\n G = G >>> 0;\n var Te = Yl();\n if (G > Te)\n return false;\n let nt = (Wt, Yr) => Wt + (Yr - Wt % Yr) % Yr;\n for (var Tt = 1; Tt <= 4; Tt *= 2) {\n var _t = se * (1 + 0.2 / Tt);\n _t = Math.min(_t, G + 100663296);\n var qe = Math.min(Te, nt(Math.max(G, _t), 65536)), Ue = Ql(qe);\n if (Ue)\n return true;\n }\n return false;\n }\n var lr = { varargs: void 0, get: function() {\n lr.varargs += 4;\n var G = ie[lr.varargs - 4 >> 2];\n return G;\n }, getStr: function(G) {\n var se = K(G);\n return se;\n } };\n function Zl(G) {\n return 52;\n }\n function Fx(G, se, Te, nt, Tt) {\n return 70;\n }\n var Ox = [null, [], []];\n function RI(G, se) {\n var Te = Ox[G];\n se === 0 || se === 10 ? ((G === 1 ? _ : E)(U(Te, 0)), Te.length = 0) : Te.push(se);\n }\n function DI(G, se, Te, nt) {\n for (var Tt = 0, _t = 0; _t < Te; _t++) {\n var qe = ce[se >> 2], Ue = ce[se + 4 >> 2];\n se += 8;\n for (var Wt = 0; Wt < Ue; Wt++)\n RI(G, oe[qe + Wt]);\n Tt += Ue;\n }\n return ce[nt >> 2] = Tt, 0;\n }\n function Jl(G) {\n var se = t10[\"_\" + G];\n return se;\n }\n function qi(G, se) {\n ee.set(G, se);\n }\n function Px(G, se, Te, nt, Tt) {\n var _t = { string: (hr) => {\n var Za = 0;\n if (hr != null && hr !== 0) {\n var gm = (hr.length << 2) + 1;\n Za = Vc(gm), q(hr, Za, gm);\n }\n return Za;\n }, array: (hr) => {\n var Za = Vc(hr.length);\n return qi(hr, Za), Za;\n } };\n function qe(hr) {\n return se === \"string\" ? K(hr) : se === \"boolean\" ? Boolean(hr) : hr;\n }\n var Ue = Jl(G), Wt = [], Yr = 0;\n if (nt)\n for (var oa = 0; oa < nt.length; oa++) {\n var hm = _t[Te[oa]];\n hm ? (Yr === 0 && (Yr = mm()), Wt[oa] = hm(nt[oa])) : Wt[oa] = nt[oa];\n }\n var zc = Ue.apply(null, Wt);\n function fb(hr) {\n return Yr !== 0 && dm(Yr), qe(hr);\n }\n return zc = fb(zc), zc;\n }\n function Mx(G, se, Te, nt) {\n Te = Te || [];\n var Tt = Te.every((qe) => qe === \"number\" || qe === \"boolean\"), _t = se !== \"string\";\n return _t && Tt && !nt ? Jl(G) : function() {\n return Px(G, se, Te, arguments, nt);\n };\n }\n var Oc = { abort: Rx, emscripten_get_heap_max: Ki, emscripten_memcpy_big: Dx, emscripten_resize_heap: ep, fd_close: Zl, fd_seek: Fx, fd_write: DI }, Lx = Fc(), em = t10.___wasm_call_ctors = function() {\n return (em = t10.___wasm_call_ctors = t10.asm.__wasm_call_ctors).apply(null, arguments);\n }, tm = t10._init = function() {\n return (tm = t10._init = t10.asm.init).apply(null, arguments);\n }, Bx = t10._init_with_threads_count = function() {\n return (Bx = t10._init_with_threads_count = t10.asm.init_with_threads_count).apply(null, arguments);\n }, rm = t10._get_threads_count = function() {\n return (rm = t10._get_threads_count = t10.asm.get_threads_count).apply(null, arguments);\n }, Vx = t10._register_tensor = function() {\n return (Vx = t10._register_tensor = t10.asm.register_tensor).apply(null, arguments);\n }, Oe = t10._dispose_data = function() {\n return (Oe = t10._dispose_data = t10.asm.dispose_data).apply(null, arguments);\n }, Pc = t10._dispose = function() {\n return (Pc = t10._dispose = t10.asm.dispose).apply(null, arguments);\n }, zx = t10._Abs = function() {\n return (zx = t10._Abs = t10.asm.Abs).apply(null, arguments);\n }, om = t10._Add = function() {\n return (om = t10._Add = t10.asm.Add).apply(null, arguments);\n }, tp = t10._AddN = function() {\n return (tp = t10._AddN = t10.asm.AddN).apply(null, arguments);\n }, Wx = t10._All = function() {\n return (Wx = t10._All = t10.asm.All).apply(null, arguments);\n }, Ux = t10._Any = function() {\n return (Ux = t10._Any = t10.asm.Any).apply(null, arguments);\n }, Gx = t10._ArgMax = function() {\n return (Gx = t10._ArgMax = t10.asm.ArgMax).apply(null, arguments);\n }, Hx = t10._AvgPool = function() {\n return (Hx = t10._AvgPool = t10.asm.AvgPool).apply(null, arguments);\n }, Kx = t10._BatchMatMul = function() {\n return (Kx = t10._BatchMatMul = t10.asm.BatchMatMul).apply(null, arguments);\n }, nm = t10._Ceil = function() {\n return (nm = t10._Ceil = t10.asm.Ceil).apply(null, arguments);\n }, sm = t10._ClipByValue = function() {\n return (sm = t10._ClipByValue = t10.asm.ClipByValue).apply(null, arguments);\n }, qx = t10._Conv2D = function() {\n return (qx = t10._Conv2D = t10.asm.Conv2D).apply(null, arguments);\n }, jx = t10._Conv2DBackpropInput = function() {\n return (jx = t10._Conv2DBackpropInput = t10.asm.Conv2DBackpropInput).apply(null, arguments);\n }, Xx = t10._Cos = function() {\n return (Xx = t10._Cos = t10.asm.Cos).apply(null, arguments);\n }, Mc = t10._Cosh = function() {\n return (Mc = t10._Cosh = t10.asm.Cosh).apply(null, arguments);\n }, Yx = t10._CropAndResize = function() {\n return (Yx = t10._CropAndResize = t10.asm.CropAndResize).apply(null, arguments);\n }, Qx = t10._Cumprod = function() {\n return (Qx = t10._Cumprod = t10.asm.Cumprod).apply(null, arguments);\n }, Zx = t10._Cumsum = function() {\n return (Zx = t10._Cumsum = t10.asm.Cumsum).apply(null, arguments);\n }, ji = t10._DepthToSpace = function() {\n return (ji = t10._DepthToSpace = t10.asm.DepthToSpace).apply(null, arguments);\n }, Jx = t10._DepthwiseConv2dNative = function() {\n return (Jx = t10._DepthwiseConv2dNative = t10.asm.DepthwiseConv2dNative).apply(null, arguments);\n }, ey = t10._Elu = function() {\n return (ey = t10._Elu = t10.asm.Elu).apply(null, arguments);\n }, am = t10._Equal = function() {\n return (am = t10._Equal = t10.asm.Equal).apply(null, arguments);\n }, ty = t10._Exp = function() {\n return (ty = t10._Exp = t10.asm.Exp).apply(null, arguments);\n }, Lc = t10._FlipLeftRight = function() {\n return (Lc = t10._FlipLeftRight = t10.asm.FlipLeftRight).apply(null, arguments);\n }, ry = t10._Floor = function() {\n return (ry = t10._Floor = t10.asm.Floor).apply(null, arguments);\n }, oy = t10._FloorDiv = function() {\n return (oy = t10._FloorDiv = t10.asm.FloorDiv).apply(null, arguments);\n }, ny = t10._FusedBatchNorm = function() {\n return (ny = t10._FusedBatchNorm = t10.asm.FusedBatchNorm).apply(null, arguments);\n }, Qa = t10._FusedConv2D = function() {\n return (Qa = t10._FusedConv2D = t10.asm.FusedConv2D).apply(null, arguments);\n }, Bc = t10._FusedDepthwiseConv2D = function() {\n return (Bc = t10._FusedDepthwiseConv2D = t10.asm.FusedDepthwiseConv2D).apply(null, arguments);\n }, sy = t10._Gather = function() {\n return (sy = t10._Gather = t10.asm.Gather).apply(null, arguments);\n }, ay = t10._GatherNd = function() {\n return (ay = t10._GatherNd = t10.asm.GatherNd).apply(null, arguments);\n }, iy = t10._Greater = function() {\n return (iy = t10._Greater = t10.asm.Greater).apply(null, arguments);\n }, uy = t10._GreaterEqual = function() {\n return (uy = t10._GreaterEqual = t10.asm.GreaterEqual).apply(null, arguments);\n }, im = t10._IsNan = function() {\n return (im = t10._IsNan = t10.asm.IsNan).apply(null, arguments);\n }, um = t10._LeakyRelu = function() {\n return (um = t10._LeakyRelu = t10.asm.LeakyRelu).apply(null, arguments);\n }, py = t10._Less = function() {\n return (py = t10._Less = t10.asm.Less).apply(null, arguments);\n }, cy = t10._LessEqual = function() {\n return (cy = t10._LessEqual = t10.asm.LessEqual).apply(null, arguments);\n }, pm = t10._Log = function() {\n return (pm = t10._Log = t10.asm.Log).apply(null, arguments);\n }, cm = t10._LogicalAnd = function() {\n return (cm = t10._LogicalAnd = t10.asm.LogicalAnd).apply(null, arguments);\n }, ly = t10._LogicalNot = function() {\n return (ly = t10._LogicalNot = t10.asm.LogicalNot).apply(null, arguments);\n }, my = t10._LogicalOr = function() {\n return (my = t10._LogicalOr = t10.asm.LogicalOr).apply(null, arguments);\n }, dy = t10._LogicalXor = function() {\n return (dy = t10._LogicalXor = t10.asm.LogicalXor).apply(null, arguments);\n }, fy = t10._Max = function() {\n return (fy = t10._Max = t10.asm.Max).apply(null, arguments);\n }, lm = t10._MaxPool = function() {\n return (lm = t10._MaxPool = t10.asm.MaxPool).apply(null, arguments);\n }, FI = t10._Maximum = function() {\n return (FI = t10._Maximum = t10.asm.Maximum).apply(null, arguments);\n }, hy = t10._Mean = function() {\n return (hy = t10._Mean = t10.asm.Mean).apply(null, arguments);\n }, gy = t10._Min = function() {\n return (gy = t10._Min = t10.asm.Min).apply(null, arguments);\n }, xy = t10._Minimum = function() {\n return (xy = t10._Minimum = t10.asm.Minimum).apply(null, arguments);\n }, yy = t10._MirrorPad = function() {\n return (yy = t10._MirrorPad = t10.asm.MirrorPad).apply(null, arguments);\n }, by = t10._Multiply = function() {\n return (by = t10._Multiply = t10.asm.Multiply).apply(null, arguments);\n }, Cy = t10._Neg = function() {\n return (Cy = t10._Neg = t10.asm.Neg).apply(null, arguments);\n }, Sy = t10._NonMaxSuppressionV3 = function() {\n return (Sy = t10._NonMaxSuppressionV3 = t10.asm.NonMaxSuppressionV3).apply(null, arguments);\n }, wy = t10._NonMaxSuppressionV4 = function() {\n return (wy = t10._NonMaxSuppressionV4 = t10.asm.NonMaxSuppressionV4).apply(null, arguments);\n }, Iy = t10._NonMaxSuppressionV5 = function() {\n return (Iy = t10._NonMaxSuppressionV5 = t10.asm.NonMaxSuppressionV5).apply(null, arguments);\n }, vy = t10._NotEqual = function() {\n return (vy = t10._NotEqual = t10.asm.NotEqual).apply(null, arguments);\n }, ky = t10._OneHot = function() {\n return (ky = t10._OneHot = t10.asm.OneHot).apply(null, arguments);\n }, Ny = t10._PadV2 = function() {\n return (Ny = t10._PadV2 = t10.asm.PadV2).apply(null, arguments);\n }, Ty = t10._Pow = function() {\n return (Ty = t10._Pow = t10.asm.Pow).apply(null, arguments);\n }, _y = t10._Prelu = function() {\n return (_y = t10._Prelu = t10.asm.Prelu).apply(null, arguments);\n }, $y = t10._Prod = function() {\n return ($y = t10._Prod = t10.asm.Prod).apply(null, arguments);\n }, Ey = t10._RealDiv = function() {\n return (Ey = t10._RealDiv = t10.asm.RealDiv).apply(null, arguments);\n }, Ay = t10._Reciprocal = function() {\n return (Ay = t10._Reciprocal = t10.asm.Reciprocal).apply(null, arguments);\n }, Ry = t10._Relu = function() {\n return (Ry = t10._Relu = t10.asm.Relu).apply(null, arguments);\n }, Dy = t10._Relu6 = function() {\n return (Dy = t10._Relu6 = t10.asm.Relu6).apply(null, arguments);\n }, Fy = t10._ResizeBilinear = function() {\n return (Fy = t10._ResizeBilinear = t10.asm.ResizeBilinear).apply(null, arguments);\n }, Oy = t10._ResizeNearestNeighbor = function() {\n return (Oy = t10._ResizeNearestNeighbor = t10.asm.ResizeNearestNeighbor).apply(null, arguments);\n }, Py = t10._Reverse = function() {\n return (Py = t10._Reverse = t10.asm.Reverse).apply(null, arguments);\n }, My = t10._RotateWithOffset = function() {\n return (My = t10._RotateWithOffset = t10.asm.RotateWithOffset).apply(null, arguments);\n }, Ly = t10._Round = function() {\n return (Ly = t10._Round = t10.asm.Round).apply(null, arguments);\n }, By = t10._Rsqrt = function() {\n return (By = t10._Rsqrt = t10.asm.Rsqrt).apply(null, arguments);\n }, Vy = t10._ScatterNd = function() {\n return (Vy = t10._ScatterNd = t10.asm.ScatterNd).apply(null, arguments);\n }, zy = t10._SelectV2 = function() {\n return (zy = t10._SelectV2 = t10.asm.SelectV2).apply(null, arguments);\n }, Wy = t10._Sigmoid = function() {\n return (Wy = t10._Sigmoid = t10.asm.Sigmoid).apply(null, arguments);\n }, Uy = t10._Sin = function() {\n return (Uy = t10._Sin = t10.asm.Sin).apply(null, arguments);\n }, Gy = t10._Softmax = function() {\n return (Gy = t10._Softmax = t10.asm.Softmax).apply(null, arguments);\n }, Hy = t10._SparseFillEmptyRows = function() {\n return (Hy = t10._SparseFillEmptyRows = t10.asm.SparseFillEmptyRows).apply(null, arguments);\n }, Ky = t10._SparseReshape = function() {\n return (Ky = t10._SparseReshape = t10.asm.SparseReshape).apply(null, arguments);\n }, qy = t10._SparseSegmentReduction = function() {\n return (qy = t10._SparseSegmentReduction = t10.asm.SparseSegmentReduction).apply(null, arguments);\n }, jy = t10._Sqrt = function() {\n return (jy = t10._Sqrt = t10.asm.Sqrt).apply(null, arguments);\n }, Xy = t10._Square = function() {\n return (Xy = t10._Square = t10.asm.Square).apply(null, arguments);\n }, Yy = t10._SquaredDifference = function() {\n return (Yy = t10._SquaredDifference = t10.asm.SquaredDifference).apply(null, arguments);\n }, Qy = t10._Step = function() {\n return (Qy = t10._Step = t10.asm.Step).apply(null, arguments);\n }, Zy = t10._StridedSlice = function() {\n return (Zy = t10._StridedSlice = t10.asm.StridedSlice).apply(null, arguments);\n }, Jy = t10._Sub = function() {\n return (Jy = t10._Sub = t10.asm.Sub).apply(null, arguments);\n }, eb = t10._Sum = function() {\n return (eb = t10._Sum = t10.asm.Sum).apply(null, arguments);\n }, tb = t10._Tan = function() {\n return (tb = t10._Tan = t10.asm.Tan).apply(null, arguments);\n }, rb = t10._Tanh = function() {\n return (rb = t10._Tanh = t10.asm.Tanh).apply(null, arguments);\n }, ob = t10._Tile = function() {\n return (ob = t10._Tile = t10.asm.Tile).apply(null, arguments);\n }, nb = t10._TopK = function() {\n return (nb = t10._TopK = t10.asm.TopK).apply(null, arguments);\n }, sb = t10._Transform = function() {\n return (sb = t10._Transform = t10.asm.Transform).apply(null, arguments);\n }, ab = t10._Transpose = function() {\n return (ab = t10._Transpose = t10.asm.Transpose).apply(null, arguments);\n }, ib = t10.__FusedMatMul = function() {\n return (ib = t10.__FusedMatMul = t10.asm._FusedMatMul).apply(null, arguments);\n }, ub = t10._malloc = function() {\n return (ub = t10._malloc = t10.asm.malloc).apply(null, arguments);\n }, pb = t10._free = function() {\n return (pb = t10._free = t10.asm.free).apply(null, arguments);\n }, cb = t10.___errno_location = function() {\n return (cb = t10.___errno_location = t10.asm.__errno_location).apply(null, arguments);\n }, mm = t10.stackSave = function() {\n return (mm = t10.stackSave = t10.asm.stackSave).apply(null, arguments);\n }, dm = t10.stackRestore = function() {\n return (dm = t10.stackRestore = t10.asm.stackRestore).apply(null, arguments);\n }, Vc = t10.stackAlloc = function() {\n return (Vc = t10.stackAlloc = t10.asm.stackAlloc).apply(null, arguments);\n }, lb = t10.dynCall_iijjiiii = function() {\n return (lb = t10.dynCall_iijjiiii = t10.asm.dynCall_iijjiiii).apply(null, arguments);\n }, mb = t10.dynCall_jiji = function() {\n return (mb = t10.dynCall_jiji = t10.asm.dynCall_jiji).apply(null, arguments);\n };\n t10.cwrap = Mx;\n var rp;\n rr = function G() {\n rp || fm(), rp || (rr = G);\n };\n function fm(G) {\n if (G = G || i, Nt > 0 || (ft(), Nt > 0))\n return;\n function se() {\n rp || (rp = true, t10.calledRun = true, !M && (ht(), o(t10), t10.onRuntimeInitialized && t10.onRuntimeInitialized(), Rr()));\n }\n t10.setStatus ? (t10.setStatus(\"Running...\"), setTimeout(function() {\n setTimeout(function() {\n t10.setStatus(\"\");\n }, 1), se();\n }, 1)) : se();\n }\n if (t10.preInit)\n for (typeof t10.preInit == \"function\" && (t10.preInit = [t10.preInit]); t10.preInit.length > 0; )\n t10.preInit.pop()();\n fm();\n var op;\n s && (op = { uncaughtException: process.listeners(\"uncaughtException\").filter(function(G) {\n return !s.uncaughtException.indexOf(G) > -1;\n }), unhandledRejection: process.listeners(\"unhandledRejection\").filter(function(G) {\n return !s.unhandledRejection.indexOf(G) > -1;\n }) });\n var np;\n if (typeof e != \"undefined\")\n np = e;\n else if (typeof WasmBackendModuleThreadedSimd != \"undefined\")\n np = WasmBackendModuleThreadedSimd;\n else\n throw new Error(\"Could not find wasm module in post.js\");\n if (op) {\n var db = np._dispose;\n np._dispose = function() {\n db(), op.uncaughtException.forEach(function(G) {\n process.removeListener(\"uncaughtException\", G);\n }), op.unhandledRejection.forEach(function(G) {\n process.removeListener(\"unhandledRejection\", G);\n });\n };\n }\n return e.ready;\n };\n })();\n typeof Ig == \"object\" && typeof uI == \"object\" ? uI.exports = iI : typeof define == \"function\" && define.amd ? define([], function() {\n return iI;\n }) : typeof Ig == \"object\" && (Ig.WasmBackendModule = iI);\n});\nvar Fo = class {\n constructor(e, t10) {\n this.backend = e, this.dataMover = t10, this.data = /* @__PURE__ */ new WeakMap(), this.dataIdsCount = 0;\n }\n get(e) {\n return this.data.has(e) || this.dataMover.moveData(this.backend, e), this.data.get(e);\n }\n set(e, t10) {\n this.dataIdsCount++, this.data.set(e, t10);\n }\n has(e) {\n return this.data.has(e);\n }\n delete(e) {\n return this.dataIdsCount--, this.data.delete(e);\n }\n numDataIds() {\n return this.dataIdsCount;\n }\n};\nvar Zr = class {\n refCount(e) {\n return Fr(\"refCount\");\n }\n incRef(e) {\n return Fr(\"incRef\");\n }\n timerAvailable() {\n return true;\n }\n time(e) {\n return Fr(\"time\");\n }\n read(e) {\n return Fr(\"read\");\n }\n readSync(e) {\n return Fr(\"readSync\");\n }\n readToGPU(e, t10) {\n return Fr(\"readToGPU\");\n }\n numDataIds() {\n return Fr(\"numDataIds\");\n }\n disposeData(e, t10) {\n return Fr(\"disposeData\");\n }\n write(e, t10, o) {\n return Fr(\"write\");\n }\n move(e, t10, o, n, s) {\n return Fr(\"move\");\n }\n createTensorFromGPUData(e, t10, o) {\n return Fr(\"createTensorFromGPUData\");\n }\n memory() {\n return Fr(\"memory\");\n }\n floatPrecision() {\n return Fr(\"floatPrecision\");\n }\n epsilon() {\n return this.floatPrecision() === 32 ? 1e-7 : 1e-4;\n }\n dispose() {\n return Fr(\"dispose\");\n }\n};\nfunction Fr(r) {\n throw new Error(`'${r}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`);\n}\nfunction UI(r) {\n let e = r.length, t10 = 0;\n for (; e > 0; )\n t10 = Math.random() * e | 0, e--, Im(r, e, t10);\n}\nfunction WV(r, e) {\n if (r.length !== e.length)\n throw new Error(`Array sizes must match to be shuffled together First array length was ${r.length}Second array length was ${e.length}`);\n let t10 = r.length, o = 0;\n for (; t10 > 0; )\n o = Math.random() * t10 | 0, t10--, Im(r, t10, o), Im(e, t10, o);\n}\nfunction ip(r, e, t10) {\n return Math.max(r, Math.min(e, t10));\n}\nfunction UV(r) {\n return r % 2 === 0 ? r : r + 1;\n}\nfunction Im(r, e, t10) {\n let o = r[e];\n r[e] = r[t10], r[t10] = o;\n}\nfunction GV(r) {\n let e = 0;\n for (let t10 = 0; t10 < r.length; t10++)\n e += r[t10];\n return e;\n}\nfunction HV(r, e) {\n let t10 = Math.random();\n return e * t10 + (1 - t10) * r;\n}\nfunction KV(r, e) {\n let t10 = 0;\n for (let o = 0; o < r.length; o++) {\n let n = Number(r[o]) - Number(e[o]);\n t10 += n * n;\n }\n return t10;\n}\nfunction $(r, e) {\n if (!r)\n throw new Error(typeof e == \"string\" ? e : e());\n}\nfunction gt(r, e, t10 = \"\") {\n $(Or(r, e), () => t10 + ` Shapes ${r} and ${e} must match`);\n}\nfunction Jr(r) {\n $(r != null, () => \"The input to the tensor constructor must be a non-null value.\");\n}\nfunction We(r) {\n if (r.length === 0)\n return 1;\n let e = r[0];\n for (let t10 = 1; t10 < r.length; t10++)\n e *= r[t10];\n return e;\n}\nfunction qV(r) {\n return r.length === 0;\n}\nfunction Or(r, e) {\n if (r === e)\n return true;\n if (r == null || e == null || r.length !== e.length)\n return false;\n for (let t10 = 0; t10 < r.length; t10++)\n if (r[t10] !== e[t10])\n return false;\n return true;\n}\nfunction sa(r) {\n return r % 1 === 0;\n}\nfunction jV(r) {\n if (Math.tanh != null)\n return Math.tanh(r);\n if (r === 1 / 0)\n return 1;\n if (r === -1 / 0)\n return -1;\n {\n let e = Math.exp(2 * r);\n return (e - 1) / (e + 1);\n }\n}\nfunction XV(r) {\n let e = Math.ceil(Math.sqrt(r));\n return [e, Math.ceil(r / e)];\n}\nfunction YV(r) {\n let e = new Uint32Array(r);\n for (let t10 = 0; t10 < r; ++t10)\n e[t10] = t10;\n return UI(e), e;\n}\nfunction Yi(r, e) {\n return e <= r.length ? r : r + \" \".repeat(e - r.length);\n}\nfunction QV(r, e = (n) => 0, t10, o) {\n return new Promise((n, s) => {\n let a = 0, i = () => {\n if (r()) {\n n();\n return;\n }\n a++;\n let p = e(a);\n if (t10 != null && a >= t10) {\n s();\n return;\n }\n o != null ? o(i, p) : setTimeout(i, p);\n };\n i();\n });\n}\nfunction ZV(r, e) {\n let t10 = 1, o = -1;\n for (let s = 0; s < r.length; ++s)\n if (r[s] >= 0)\n t10 *= r[s];\n else if (r[s] === -1) {\n if (o !== -1)\n throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${o} and dim ${s}`);\n o = s;\n } else if (r[s] < 0)\n throw Error(`Shapes can not be < 0. Found ${r[s]} at dim ${s}`);\n if (o === -1) {\n if (e > 0 && e !== t10)\n throw Error(`Size(${e}) must match the product of shape ${r}`);\n return r;\n }\n if (t10 === 0)\n throw Error(`Cannot infer the missing size in [${r}] when there are 0 elements`);\n if (e % t10 !== 0)\n throw Error(`The implicit shape can't be a fractional number. Got ${e} / ${t10}`);\n let n = r.slice();\n return n[o] = e / t10, n;\n}\nfunction Ja(r, e) {\n let t10 = e.length;\n return r = r == null ? e.map((o, n) => n) : [].concat(r), $(r.every((o) => o >= -t10 && o < t10), () => `All values in axis param must be in range [-${t10}, ${t10}) but got axis ${r}`), $(r.every((o) => sa(o)), () => `All values in axis param must be integers but got axis ${r}`), r.map((o) => o < 0 ? t10 + o : o);\n}\nfunction bb(r, e) {\n let t10 = [], o = [], n = e != null && Array.isArray(e) && e.length === 0, s = e == null || n ? null : Ja(e, r).sort(), a = 0;\n for (let i = 0; i < r.length; ++i) {\n if (s != null) {\n if (s[a] === i && r[i] !== 1)\n throw new Error(`Can't squeeze axis ${i} since its dim '${r[i]}' is not 1`);\n (s[a] == null || s[a] > i) && r[i] === 1 && (t10.push(r[i]), o.push(i)), s[a] <= i && a++;\n }\n r[i] !== 1 && (t10.push(r[i]), o.push(i));\n }\n return { newShape: t10, keptDims: o };\n}\nfunction Cb(r, e) {\n let t10 = null;\n if (r == null || r === \"float32\")\n t10 = new Float32Array(e);\n else if (r === \"int32\")\n t10 = new Int32Array(e);\n else if (r === \"bool\")\n t10 = new Uint8Array(e);\n else\n throw new Error(`Unknown data type ${r}`);\n return t10;\n}\nfunction Sb(r, e) {\n let t10 = null;\n if (r == null || r === \"float32\")\n t10 = new Float32Array(e);\n else if (r === \"int32\")\n t10 = new Int32Array(e);\n else if (r === \"bool\")\n t10 = new Uint8Array(e);\n else if (r === \"string\")\n t10 = new Array(e);\n else\n throw new Error(`Unknown data type ${r}`);\n return t10;\n}\nfunction wb(r, e) {\n for (let t10 = 0; t10 < r.length; t10++) {\n let o = r[t10];\n if (isNaN(o) || !isFinite(o))\n throw Error(`A tensor of type ${e} being uploaded contains ${o}.`);\n }\n}\nfunction Ib(r) {\n return r === \"bool\" || r === \"complex64\" || r === \"float32\" || r === \"int32\" || r === \"string\";\n}\nfunction JV(r, e) {\n return !(e === \"complex64\" || e === \"float32\" && r !== \"complex64\" || e === \"int32\" && r !== \"float32\" && r !== \"complex64\" || e === \"bool\" && r === \"bool\");\n}\nfunction up(r) {\n if (r === \"float32\" || r === \"int32\")\n return 4;\n if (r === \"complex64\")\n return 8;\n if (r === \"bool\")\n return 1;\n throw new Error(`Unknown dtype ${r}`);\n}\nfunction vb(r) {\n if (r == null)\n return 0;\n let e = 0;\n return r.forEach((t10) => e += t10.length), e;\n}\nfunction Oo(r) {\n return typeof r == \"string\" || r instanceof String;\n}\nfunction GI(r) {\n return typeof r == \"boolean\";\n}\nfunction HI(r) {\n return typeof r == \"number\";\n}\nfunction pp(r) {\n return Array.isArray(r) ? pp(r[0]) : r instanceof Float32Array ? \"float32\" : r instanceof Int32Array || r instanceof Uint8Array || r instanceof Uint8ClampedArray ? \"int32\" : HI(r) ? \"float32\" : Oo(r) ? \"string\" : GI(r) ? \"bool\" : \"float32\";\n}\nfunction gs(r) {\n return !!(r && r.constructor && r.call && r.apply);\n}\nfunction cp(r, e) {\n for (let t10 = e; t10 < r; ++t10)\n if (r % t10 === 0)\n return t10;\n return r;\n}\nfunction xs(r) {\n let e = r.length;\n if (e < 2)\n return [];\n let t10 = new Array(e - 1);\n t10[e - 2] = r[e - 1];\n for (let o = e - 3; o >= 0; --o)\n t10[o] = t10[o + 1] * r[o + 1];\n return t10;\n}\nfunction KI(r, e, t10, o = false) {\n let n = new Array();\n if (e.length === 1) {\n let s = e[0] * (o ? 2 : 1);\n for (let a = 0; a < s; a++)\n n[a] = t10[r + a];\n } else {\n let s = e[0], a = e.slice(1), i = a.reduce((p, u) => p * u) * (o ? 2 : 1);\n for (let p = 0; p < s; p++)\n n[p] = KI(r + p * i, a, t10, o);\n }\n return n;\n}\nfunction Xi(r, e, t10 = false) {\n if (r.length === 0)\n return e[0];\n let o = r.reduce((n, s) => n * s) * (t10 ? 2 : 1);\n if (o === 0)\n return [];\n if (o !== e.length)\n throw new Error(`[${r}] does not match the input size ${e.length}${t10 ? \" for a complex tensor\" : \"\"}.`);\n return KI(0, r, e, t10);\n}\nfunction ez(r, e) {\n if (Array.isArray(r))\n return r;\n if (e === \"float32\")\n return r instanceof Float32Array ? r : new Float32Array(r);\n if (e === \"int32\")\n return r instanceof Int32Array ? r : new Int32Array(r);\n if (e === \"bool\" || e === \"string\")\n return Uint8Array.from(new Int32Array(r));\n throw new Error(`Unknown dtype ${e}`);\n}\nfunction Wc(r, e) {\n let t10 = lp(r, e);\n for (let o = 0; o < t10.length; o++)\n t10[o] = 1;\n return t10;\n}\nfunction lp(r, e) {\n if (e == null || e === \"float32\" || e === \"complex64\")\n return new Float32Array(r);\n if (e === \"int32\")\n return new Int32Array(r);\n if (e === \"bool\")\n return new Uint8Array(r);\n throw new Error(`Unknown data type ${e}`);\n}\nfunction tz(r, e) {\n let t10 = r.reduce((o, n) => o * n, 1);\n if (e == null || e === \"float32\")\n return Xi(r, new Float32Array(t10));\n if (e === \"int32\")\n return Xi(r, new Int32Array(t10));\n if (e === \"bool\")\n return Xi(r, new Uint8Array(t10));\n throw new Error(`Unknown data type ${e}`);\n}\nfunction bt(r) {\n r.forEach((e) => {\n $(Number.isInteger(e) && e >= 0, () => `Tensor must have a shape comprised of positive integers but got shape [${r}].`);\n });\n}\nfunction rz(r, e, t10) {\n if (e === 0)\n return 0;\n if (e === 1)\n return r[0];\n let o = r[r.length - 1];\n for (let n = 0; n < r.length - 1; ++n)\n o += t10[n] * r[n];\n return o;\n}\nfunction oz(r, e, t10) {\n if (e === 0)\n return [];\n if (e === 1)\n return [r];\n let o = new Array(e);\n for (let n = 0; n < o.length - 1; ++n)\n o[n] = Math.floor(r / t10[n]), r -= o[n] * t10[n];\n return o[o.length - 1] = r, o;\n}\nfunction Qi(r) {\n return r && r.then && typeof r.then == \"function\";\n}\nvar qI = \"tfjsflags\";\nvar Uc = class {\n constructor(e) {\n this.global = e, this.flags = {}, this.flagRegistry = {}, this.urlFlags = {}, this.getQueryParams = sz, this.populateURLFlags();\n }\n setPlatform(e, t10) {\n this.platform != null && (O().getBool(\"IS_TEST\") || O().getBool(\"PROD\") || console.warn(`Platform ${this.platformName} has already been set. Overwriting the platform with ${e}.`)), this.platformName = e, this.platform = t10;\n }\n registerFlag(e, t10, o) {\n if (this.flagRegistry[e] = { evaluationFn: t10, setHook: o }, this.urlFlags[e] != null) {\n let n = this.urlFlags[e];\n O().getBool(\"IS_TEST\") || O().getBool(\"PROD\") || console.warn(`Setting feature override from URL ${e}: ${n}.`), this.set(e, n);\n }\n }\n async getAsync(e) {\n return e in this.flags ? this.flags[e] : (this.flags[e] = await this.evaluateFlag(e), this.flags[e]);\n }\n get(e) {\n if (e in this.flags)\n return this.flags[e];\n let t10 = this.evaluateFlag(e);\n if (Qi(t10))\n throw new Error(`Flag ${e} cannot be synchronously evaluated. Please use getAsync() instead.`);\n return this.flags[e] = t10, this.flags[e];\n }\n getNumber(e) {\n return this.get(e);\n }\n getBool(e) {\n return this.get(e);\n }\n getFlags() {\n return this.flags;\n }\n get features() {\n return this.flags;\n }\n set(e, t10) {\n if (this.flagRegistry[e] == null)\n throw new Error(`Cannot set flag ${e} as it has not been registered.`);\n this.flags[e] = t10, this.flagRegistry[e].setHook != null && this.flagRegistry[e].setHook(t10);\n }\n evaluateFlag(e) {\n if (this.flagRegistry[e] == null)\n throw new Error(`Cannot evaluate flag '${e}': no evaluation function found.`);\n return this.flagRegistry[e].evaluationFn();\n }\n setFlags(e) {\n this.flags = Object.assign({}, e);\n }\n reset() {\n this.flags = {}, this.urlFlags = {}, this.populateURLFlags();\n }\n populateURLFlags() {\n if (typeof this.global == \"undefined\" || typeof this.global.location == \"undefined\" || typeof this.global.location.search == \"undefined\")\n return;\n let e = this.getQueryParams(this.global.location.search);\n qI in e && e[qI].split(\",\").forEach((o) => {\n let [n, s] = o.split(\":\");\n this.urlFlags[n] = iz(n, s);\n });\n }\n};\nfunction sz(r) {\n let e = {};\n return r.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g, (t10, ...o) => (az(e, o[0], o[1]), o.join(\"=\"))), e;\n}\nfunction az(r, e, t10) {\n r[decodeURIComponent(e)] = decodeURIComponent(t10 || \"\");\n}\nfunction iz(r, e) {\n if (e = e.toLowerCase(), e === \"true\" || e === \"false\")\n return e === \"true\";\n if (`${+e}` === e)\n return +e;\n throw new Error(`Could not parse value flag value ${e} for flag ${r}.`);\n}\nfunction O() {\n return kb;\n}\nvar kb = null;\nfunction jI(r) {\n kb = r;\n}\nvar Nb;\nfunction Tb() {\n if (Nb == null) {\n let r;\n if (typeof window != \"undefined\")\n r = window;\n else if (typeof global != \"undefined\")\n r = global;\n else if (typeof process != \"undefined\")\n r = process;\n else if (typeof self != \"undefined\")\n r = self;\n else\n throw new Error(\"Could not find a global object\");\n Nb = r;\n }\n return Nb;\n}\nfunction uz() {\n let r = Tb();\n return r._tfGlobals == null && (r._tfGlobals = /* @__PURE__ */ new Map()), r._tfGlobals;\n}\nfunction Gc(r, e) {\n let t10 = uz();\n if (t10.has(r))\n return t10.get(r);\n {\n let o = e();\n return t10.set(r, o), t10.get(r);\n }\n}\nvar ys = \"Abs\";\nvar aa = \"Acos\";\nvar ia = \"Acosh\";\nvar eo = \"Add\";\nvar Po = \"AddN\";\nvar Mo = \"All\";\nvar Lo = \"Any\";\nvar Bo = \"ArgMax\";\nvar ei = \"ArgMin\";\nvar ua = \"Asin\";\nvar pa = \"Asinh\";\nvar ca = \"Atan\";\nvar la = \"Atanh\";\nvar ma = \"Atan2\";\nvar Vo = \"AvgPool\";\nvar mp = \"AvgPoolGrad\";\nvar dp = \"AvgPool3D\";\nvar vm = \"AvgPool3DGrad\";\nvar zo = \"BatchMatMul\";\nvar bs = \"BatchToSpaceND\";\nvar ti = \"Bincount\";\nvar ise = \"BroadcastTo\";\nvar fp = \"BroadcastArgs\";\nvar co = \"Cast\";\nvar Wo = \"Ceil\";\nvar lo = \"ClipByValue\";\nvar ri = \"Complex\";\nvar hp = \"ComplexAbs\";\nvar Cs = \"Concat\";\nvar Uo = \"Conv2D\";\nvar oi = \"Conv2DBackpropFilter\";\nvar Go = \"Conv2DBackpropInput\";\nvar gp = \"Conv3D\";\nvar km = \"Conv3DBackpropFilterV2\";\nvar xp = \"Conv3DBackpropInputV2\";\nvar Ho = \"Cos\";\nvar Ko = \"Cosh\";\nvar qo = \"Cumprod\";\nvar jo = \"Cumsum\";\nvar Xo = \"CropAndResize\";\nvar ni = \"DenseBincount\";\nvar Yo = \"DepthToSpace\";\nvar Qo = \"DepthwiseConv2dNative\";\nvar yp = \"DepthwiseConv2dNativeBackpropFilter\";\nvar bp = \"DepthwiseConv2dNativeBackpropInput\";\nvar si = \"Diag\";\nvar ai = \"Dilation2D\";\nvar _b = \"Dilation2DBackpropInput\";\nvar $b = \"Dilation2DBackpropFilter\";\nvar Zo = \"RealDiv\";\nvar ii = \"Einsum\";\nvar Jo = \"Elu\";\nvar Nm = \"EluGrad\";\nvar da = \"Erf\";\nvar en = \"Equal\";\nvar tn = \"Exp\";\nvar Ss = \"ExpandDims\";\nvar fa = \"Expm1\";\nvar ui = \"FFT\";\nvar ws = \"Fill\";\nvar rn = \"FlipLeftRight\";\nvar on = \"Floor\";\nvar nn = \"FloorDiv\";\nvar sn = \"FusedBatchNorm\";\nvar Is = \"GatherV2\";\nvar an = \"GatherNd\";\nvar un = \"Greater\";\nvar pn = \"GreaterEqual\";\nvar mo = \"Identity\";\nvar pi = \"IFFT\";\nvar ci = \"Imag\";\nvar ha = \"IsFinite\";\nvar ga = \"IsInf\";\nvar cn = \"IsNan\";\nvar ln = \"LeakyRelu\";\nvar mn = \"Less\";\nvar dn = \"LessEqual\";\nvar li = \"LinSpace\";\nvar fn = \"Log\";\nvar xa = \"Log1p\";\nvar hn = \"LogicalAnd\";\nvar gn = \"LogicalNot\";\nvar xn = \"LogicalOr\";\nvar XI = \"LogicalXor\";\nvar use = \"LogSoftmax\";\nvar pse = \"LowerBound\";\nvar mi = \"LRN\";\nvar Tm = \"LRNGrad\";\nvar yn = \"Max\";\nvar bn = \"Maximum\";\nvar Cn = \"MaxPool\";\nvar _m = \"MaxPoolGrad\";\nvar Cp = \"MaxPool3D\";\nvar $m = \"MaxPool3DGrad\";\nvar Sp = \"MaxPoolWithArgmax\";\nvar Sn = \"Mean\";\nvar wn = \"Min\";\nvar In = \"Minimum\";\nvar vn = \"MirrorPad\";\nvar ya = \"Mod\";\nvar wp = \"Multinomial\";\nvar kn = \"Multiply\";\nvar vs = \"Neg\";\nvar Nn = \"NotEqual\";\nvar Tn = \"NonMaxSuppressionV3\";\nvar ba = \"NonMaxSuppressionV4\";\nvar _n = \"NonMaxSuppressionV5\";\nvar ks = \"OnesLike\";\nvar $n = \"OneHot\";\nvar Ns = \"Pack\";\nvar En = \"PadV2\";\nvar cse = \"Pool\";\nvar An = \"Pow\";\nvar Rn = \"Prelu\";\nvar Dn = \"Prod\";\nvar Ip = \"RaggedGather\";\nvar vp = \"RaggedRange\";\nvar kp = \"RaggedTensorToTensor\";\nvar Ts = \"Range\";\nvar di = \"Real\";\nvar Fn = \"Reciprocal\";\nvar On = \"Relu\";\nvar _s = \"Reshape\";\nvar Pn = \"ResizeNearestNeighbor\";\nvar Em = \"ResizeNearestNeighborGrad\";\nvar Mn = \"ResizeBilinear\";\nvar Am = \"ResizeBilinearGrad\";\nvar Ln = \"Relu6\";\nvar Bn = \"Reverse\";\nvar Vn = \"Round\";\nvar zn = \"Rsqrt\";\nvar Wn = \"ScatterNd\";\nvar fi = \"SearchSorted\";\nvar $s = \"Select\";\nvar Ca = \"Selu\";\nvar Es = \"Slice\";\nvar Un = \"Sin\";\nvar Sa = \"Sinh\";\nvar wa = \"Sign\";\nvar Gn = \"Sigmoid\";\nvar Ia = \"Softplus\";\nvar Hn = \"Sqrt\";\nvar Kn = \"Sum\";\nvar As = \"SpaceToBatchND\";\nvar Rs = \"SplitV\";\nvar qn = \"Softmax\";\nvar hi = \"SparseFillEmptyRows\";\nvar va = \"SparseReshape\";\nvar gi = \"SparseSegmentMean\";\nvar xi = \"SparseSegmentSum\";\nvar yi = \"SparseToDense\";\nvar jn = \"SquaredDifference\";\nvar bi = \"Square\";\nvar Xn = \"StridedSlice\";\nvar Ds = \"StringNGrams\";\nvar Ci = \"StringSplit\";\nvar Si = \"StringToHashBucketFast\";\nvar Yn = \"Sub\";\nvar Qn = \"Tan\";\nvar Zn = \"Tanh\";\nvar to = \"Tile\";\nvar Jn = \"TopK\";\nvar es = \"Transform\";\nvar ro = \"Transpose\";\nvar Np = \"Unique\";\nvar Fs = \"Unpack\";\nvar Tp = \"UnsortedSegmentSum\";\nvar lse = \"UpperBound\";\nvar Os = \"ZerosLike\";\nvar fo = \"Step\";\nvar Zi = \"FromPixels\";\nvar ts = \"RotateWithOffset\";\nvar ho = \"_FusedMatMul\";\nvar go = \"FusedConv2D\";\nvar xo = \"FusedDepthwiseConv2D\";\nfunction Ps(...r) {\n O().getBool(\"IS_TEST\") || O().getBool(\"PROD\") || console.warn(...r);\n}\nfunction pz(...r) {\n O().getBool(\"IS_TEST\") || O().getBool(\"PROD\") || console.log(...r);\n}\nvar _p = Gc(\"kernelRegistry\", () => /* @__PURE__ */ new Map());\nvar Hc = Gc(\"gradRegistry\", () => /* @__PURE__ */ new Map());\nfunction Kc(r, e) {\n let t10 = Ab(r, e);\n return _p.get(t10);\n}\nfunction Eb(r) {\n return Hc.get(r);\n}\nfunction Rm(r) {\n let e = _p.entries(), t10 = [];\n for (; ; ) {\n let { done: o, value: n } = e.next();\n if (o)\n break;\n let [s, a] = n, [i] = s.split(\"_\");\n i === r && t10.push(a);\n }\n return t10;\n}\nfunction ka(r) {\n let { kernelName: e, backendName: t10 } = r, o = Ab(e, t10);\n _p.has(o) && Ps(`The kernel '${e}' for backend '${t10}' is already registered`), _p.set(o, r);\n}\nfunction gse(r) {\n let { kernelName: e } = r;\n Hc.has(e) && O().getBool(\"DEBUG\") && Ps(`Overriding the gradient for '${e}'`), Hc.set(e, r);\n}\nfunction xse(r, e) {\n let t10 = Ab(r, e);\n if (!_p.has(t10))\n throw new Error(`The kernel '${r}' for backend '${e}' is not registered`);\n _p.delete(t10);\n}\nfunction yse(r) {\n if (!Hc.has(r))\n throw new Error(`The gradient '${r}' for backend is not registered`);\n Hc.delete(r);\n}\nfunction bse(r, e) {\n Rm(r).forEach((o) => {\n let n = Object.assign({}, o, { backendName: e });\n ka(n);\n });\n}\nfunction Ab(r, e) {\n return `${e}_${r}`;\n}\nvar y = {};\nGe(y, { arraysEqual: () => Or, assert: () => $, assertNonNegativeIntegerDimensions: () => bt, assertNonNull: () => Jr, assertShapesMatch: () => gt, bytesFromStringArray: () => vb, bytesPerElement: () => up, checkConversionForErrors: () => wb, clamp: () => ip, computeStrides: () => xs, convertBackendValuesAndArrayBuffer: () => ez, createScalarValue: () => gz, createShuffledIndices: () => YV, decodeString: () => Rp, distSquared: () => KV, encodeString: () => Ii, fetch: () => yz, fingerPrint64: () => hz, flatten: () => os, getArrayFromDType: () => Sb, getTypedArrayFromDType: () => Cb, hasEncodingLoss: () => JV, hexToLong: () => qc, indexToLoc: () => oz, inferDtype: () => pp, inferFromImplicitShape: () => ZV, isBoolean: () => GI, isFunction: () => gs, isInt: () => sa, isNumber: () => HI, isPromise: () => Qi, isScalarShape: () => qV, isString: () => Oo, isTypedArray: () => Bt, isValidDtype: () => Ib, locToIndex: () => rz, makeOnesTypedArray: () => Wc, makeZerosNestedTypedArray: () => tz, makeZerosTypedArray: () => lp, nearestDivisor: () => cp, nearestLargerEven: () => UV, now: () => ou, parseAxisParam: () => Ja, randUniform: () => HV, repeatedTry: () => QV, rightPad: () => Yi, shuffle: () => UI, shuffleCombo: () => WV, sizeFromShape: () => We, sizeToSquarishShape: () => XV, squeezeShape: () => bb, sum: () => GV, swap: () => Im, tanh: () => jV, toNestedArray: () => Xi, toTypedArray: () => Ap });\nvar Ob = ap(i0());\nvar ru = Ob.default || Ob;\nfunction qc(r) {\n return ru.fromString(r, true, 16);\n}\nvar p0 = qc(\"c3a5c85c97cb3127\");\nvar tu = qc(\"b492b66fbe98f273\");\nvar gr = qc(\"9ae16a3b2f90404f\");\nfunction Fb(r) {\n return r.xor(r.shru(47));\n}\nfunction c0(r, e, t10) {\n let o = r.slice(e, e + t10);\n return ru.fromBytes(Array.from(o), true, true);\n}\nfunction Ct(r, e) {\n return c0(r, e, 8);\n}\nfunction u0(r, e) {\n return c0(r, e, 4);\n}\nfunction jt(r, e) {\n return e === 0 ? r : r.shru(e).or(r.shl(64 - e));\n}\nfunction wi(r, e, t10 = qc(\"9ddfea08eb382d69\")) {\n let o = r.xor(e).mul(t10);\n o = o.xor(o.shru(47));\n let n = e.xor(o).mul(t10);\n return n = n.xor(n.shru(47)), n = n.mul(t10), n;\n}\nfunction lz(r, e, t10, o, n, s) {\n n = n.add(r), s = jt(s.add(n).add(o), 21);\n let a = n;\n return n = n.add(e), n = n.add(t10), s = s.add(jt(n, 44)), [n.add(o), s.add(a)];\n}\nfunction Fm(r, e, t10, o) {\n return lz(Ct(r, e), Ct(r, e + 8), Ct(r, e + 16), Ct(r, e + 24), t10, o);\n}\nfunction mz(r, e = r.length) {\n if (e >= 8) {\n let t10 = gr.add(e * 2), o = Ct(r, 0).add(gr), n = Ct(r, e - 8), s = jt(n, 37).mul(t10).add(o), a = jt(o, 25).add(n).mul(t10);\n return wi(s, a, t10);\n }\n if (e >= 4) {\n let t10 = gr.add(e * 2), o = u0(r, 0);\n return wi(o.shl(3).add(e), u0(r, e - 4), t10);\n }\n if (e > 0) {\n let t10 = r[0], o = r[e >> 1], n = r[e - 1], s = t10 + (o << 8), a = e + (n << 2);\n return Fb(gr.mul(s).xor(p0.mul(a))).mul(gr);\n }\n return gr;\n}\nfunction dz(r, e = r.length) {\n let t10 = gr.add(e * 2), o = Ct(r, 0).mul(tu), n = Ct(r, 8), s = Ct(r, e - 8).mul(t10), a = Ct(r, e - 16).mul(gr);\n return wi(jt(o.add(n), 43).add(jt(s, 30)).add(a), o.add(jt(n.add(gr), 18)).add(s), t10);\n}\nfunction fz(r, e = r.length) {\n let t10 = gr.add(e * 2), o = Ct(r, 0).mul(gr), n = Ct(r, 8), s = Ct(r, e - 8).mul(t10), a = Ct(r, e - 16).mul(gr), i = jt(o.add(n), 43).add(jt(s, 30)).add(a), p = wi(i, o.add(jt(n.add(gr), 18)).add(s), t10), u = Ct(r, 16).mul(t10), c = Ct(r, 24), l = i.add(Ct(r, e - 32)).mul(t10), m = p.add(Ct(r, e - 24)).mul(t10);\n return wi(jt(u.add(c), 43).add(jt(l, 30)).add(m), u.add(jt(c.add(o), 18)).add(l), t10);\n}\nfunction hz(r, e = r.length) {\n let t10 = ru.fromNumber(81, true);\n if (e <= 32)\n return e <= 16 ? mz(r, e) : dz(r, e);\n if (e <= 64)\n return fz(r, e);\n let o = t10, n = t10.mul(tu).add(113), s = Fb(n.mul(gr).add(113)).mul(gr), a = [ru.UZERO, ru.UZERO], i = [ru.UZERO, ru.UZERO];\n o = o.mul(gr).add(Ct(r, 0));\n let p = 0, u = (e - 1 >> 6) * 64, c = u + (e - 1 & 63) - 63;\n do\n o = jt(o.add(n).add(a[0]).add(Ct(r, p + 8)), 37).mul(tu), n = jt(n.add(a[1]).add(Ct(r, p + 48)), 42).mul(tu), o = o.xor(i[1]), n = n.add(a[0]).add(Ct(r, p + 40)), s = jt(s.add(i[0]), 33).mul(tu), a = Fm(r, p, a[1].mul(tu), o.add(i[0])), i = Fm(r, p + 32, s.add(i[1]), n.add(Ct(r, p + 16))), [s, o] = [o, s], p += 64;\n while (p !== u);\n let l = tu.add(s.and(255).shl(1));\n return p = c, i[0] = i[0].add(e - 1 & 63), a[0] = a[0].add(i[0]), i[0] = i[0].add(a[0]), o = jt(o.add(n).add(a[0]).add(Ct(r, p + 8)), 37).mul(l), n = jt(n.add(a[1]).add(Ct(r, p + 48)), 42).mul(l), o = o.xor(i[1].mul(9)), n = n.add(a[0].mul(9).add(Ct(r, p + 40))), s = jt(s.add(i[0]), 33).mul(l), a = Fm(r, p, a[1].mul(l), o.add(i[0])), i = Fm(r, p + 32, s.add(i[1]), n.add(Ct(r, p + 16))), [s, o] = [o, s], wi(wi(a[0], i[0], l).add(Fb(n).mul(p0)).add(s), wi(a[1], i[1], l).add(o), l);\n}\nfunction gz(r, e) {\n return e === \"string\" ? Ii(r) : Ap([r], e);\n}\nfunction xz(r, e) {\n return r instanceof Float32Array && e === \"float32\" || r instanceof Int32Array && e === \"int32\" || r instanceof Uint8Array && e === \"bool\";\n}\nfunction Ap(r, e) {\n if (e === \"string\")\n throw new Error(\"Cannot convert a string[] to a TypedArray\");\n if (Array.isArray(r) && (r = os(r)), O().getBool(\"DEBUG\") && wb(r, e), xz(r, e))\n return r;\n if (e == null || e === \"float32\" || e === \"complex64\")\n return new Float32Array(r);\n if (e === \"int32\")\n return new Int32Array(r);\n if (e === \"bool\") {\n let t10 = new Uint8Array(r.length);\n for (let o = 0; o < t10.length; ++o)\n Math.round(r[o]) !== 0 && (t10[o] = 1);\n return t10;\n } else\n throw new Error(`Unknown data type ${e}`);\n}\nfunction ou() {\n return O().platform.now();\n}\nfunction yz(r, e) {\n return O().platform.fetch(r, e);\n}\nfunction Ii(r, e = \"utf-8\") {\n return e = e || \"utf-8\", O().platform.encode(r, e);\n}\nfunction Rp(r, e = \"utf-8\") {\n return e = e || \"utf-8\", O().platform.decode(r, e);\n}\nfunction Bt(r) {\n return O().platform.isTypedArray(r);\n}\nfunction os(r, e = [], t10 = false) {\n if (e == null && (e = []), typeof r == \"boolean\" || typeof r == \"number\" || typeof r == \"string\" || Qi(r) || r == null || Bt(r) && t10)\n e.push(r);\n else if (Array.isArray(r) || Bt(r))\n for (let o = 0; o < r.length; ++o)\n os(r[o], e, t10);\n else {\n let o = -1;\n for (let n of Object.keys(r))\n /^([1-9]+[0-9]*|0)$/.test(n) && (o = Math.max(o, Number(n)));\n for (let n = 0; n <= o; n++)\n os(r[n], e, t10);\n }\n return e;\n}\nvar Om = class {\n constructor(e, t10) {\n this.backendTimer = e, this.logger = t10, t10 == null && (this.logger = new Pb());\n }\n profileKernel(e, t10, o) {\n let n, s = () => {\n n = o();\n }, a, i = ou();\n if (this.backendTimer.timerAvailable())\n a = this.backendTimer.time(s);\n else {\n s();\n for (let u of n)\n u.dataSync();\n a = Promise.resolve({ kernelMs: ou() - i });\n }\n if (O().getBool(\"CHECK_COMPUTATION_FOR_ERRORS\"))\n for (let u = 0; u < n.length; u++) {\n let c = n[u];\n c.data().then((l) => {\n bz(l, c.dtype, e);\n });\n }\n return { kernelName: e, outputs: n, inputs: t10, timeMs: a.then((u) => u.kernelMs), extraInfo: a.then((u) => u.getExtraProfileInfo != null ? u.getExtraProfileInfo() : \"\") };\n }\n logKernelProfile(e) {\n let { kernelName: t10, outputs: o, timeMs: n, inputs: s, extraInfo: a } = e;\n o.forEach((i) => {\n Promise.all([i.data(), n, a]).then((p) => {\n this.logger.logKernelProfile(t10, i, p[0], p[1], s, p[2]);\n });\n });\n }\n};\nfunction bz(r, e, t10) {\n if (e !== \"float32\")\n return false;\n for (let o = 0; o < r.length; o++) {\n let n = r[o];\n if (isNaN(n) || !isFinite(n))\n return console.warn(`Found ${n} in the result of '${t10}'`), true;\n }\n return false;\n}\nvar Pb = class {\n logKernelProfile(e, t10, o, n, s, a) {\n let i = typeof n == \"number\" ? Yi(`${n}ms`, 9) : n.error, p = Yi(e, 25), u = t10.rank, c = t10.size, l = Yi(t10.shape.toString(), 14), m = \"\";\n for (let d in s) {\n let f = s[d];\n if (f != null) {\n let h = f.shape || t10.shape, g = h.length;\n m += `${d}: ${g}D ${g > 0 ? h : \"\"} `;\n }\n }\n console.log(`%c${p}\t%c${i}\t%c${u}D ${l}\t%c${c}\t%c${m}\t%c${a}`, \"font-weight:bold\", \"color:red\", \"color:blue\", \"color: orange\", \"color: green\", \"color: steelblue\");\n }\n};\nfunction l0(r, e, t10) {\n let o = {}, n = {};\n for (let p = 0; p < e.length; p++)\n o[e[p].id] = true;\n for (let p = 0; p < r.length; p++) {\n let u = r[p], c = u.inputs;\n for (let l in c) {\n let m = c[l], d = false;\n for (let f = 0; f < e.length; f++)\n if (o[m.id]) {\n u.outputs.forEach((h) => o[h.id] = true), d = true, n[u.id] = true;\n break;\n }\n if (d)\n break;\n }\n }\n let s = {};\n s[t10.id] = true;\n let a = {};\n for (let p = r.length - 1; p >= 0; p--) {\n let u = r[p], c = u.inputs;\n for (let l = 0; l < u.outputs.length; l++)\n if (s[u.outputs[l].id]) {\n for (let m in c)\n s[c[m].id] = true, a[u.id] = true;\n break;\n }\n }\n let i = [];\n for (let p = 0; p < r.length; p++) {\n let u = r[p];\n if (n[u.id] && a[u.id]) {\n let c = {};\n for (let m in u.inputs) {\n let d = u.inputs[m];\n o[d.id] && (c[m] = d);\n }\n let l = Object.assign({}, u);\n l.inputs = c, l.outputs = u.outputs, i.push(l);\n }\n }\n return i;\n}\nfunction m0(r, e, t10, o) {\n for (let n = e.length - 1; n >= 0; n--) {\n let s = e[n], a = [];\n if (s.outputs.forEach((p) => {\n let u = r[p.id];\n u != null ? a.push(u) : a.push(null);\n }), s.gradient == null)\n throw new Error(`Cannot compute gradient: gradient function not found for ${s.kernelName}.`);\n let i = s.gradient(a);\n for (let p in s.inputs) {\n if (!(p in i))\n throw new Error(`Cannot backprop through input ${p}. Available gradients found: ${Object.keys(i)}.`);\n let u = t10(() => i[p]());\n if (u.dtype !== \"float32\")\n throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input ${p} must have 'float32' dtype, but has '${u.dtype}'`);\n let c = s.inputs[p];\n if (!Or(u.shape, c.shape))\n throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input '${p}' has shape '${u.shape}', which does not match the shape of the input '${c.shape}'`);\n if (r[c.id] == null)\n r[c.id] = u;\n else {\n let l = r[c.id];\n r[c.id] = o(l, u), l.dispose();\n }\n }\n }\n}\nvar d0 = 20;\nvar jc = 3;\nvar Mb = 7;\nfunction f0(r, e, t10, o) {\n let n = xs(e), s = Cz(r, e, t10, n), a = e.length, i = Pm(r, e, t10, n, s), p = [\"Tensor\"];\n return o && (p.push(` dtype: ${t10}`), p.push(` rank: ${a}`), p.push(` shape: [${e}]`), p.push(\" values:\")), p.push(i.map((u) => \" \" + u).join(`\n`)), p.join(`\n`);\n}\nfunction Cz(r, e, t10, o) {\n let n = We(e), s = o[o.length - 1], a = new Array(s).fill(0), i = e.length, p = t10 === \"complex64\" ? Yc(r) : r;\n if (i > 1)\n for (let u = 0; u < n / s; u++) {\n let c = u * s;\n for (let l = 0; l < s; l++)\n a[l] = Math.max(a[l], Xc(p[c + l], 0, t10).length);\n }\n return a;\n}\nfunction Xc(r, e, t10) {\n let o;\n return Array.isArray(r) ? o = `${parseFloat(r[0].toFixed(Mb))} + ${parseFloat(r[1].toFixed(Mb))}j` : Oo(r) ? o = `'${r}'` : t10 === \"bool\" ? o = h0(r) : o = parseFloat(r.toFixed(Mb)).toString(), Yi(o, e);\n}\nfunction h0(r) {\n return r === 0 ? \"false\" : \"true\";\n}\nfunction Pm(r, e, t10, o, n, s = true) {\n let a = t10 === \"complex64\" ? 2 : 1, i = e[0], p = e.length;\n if (p === 0) {\n if (t10 === \"complex64\") {\n let h = Yc(r);\n return [Xc(h[0], 0, t10)];\n }\n return t10 === \"bool\" ? [h0(r[0])] : [r[0].toString()];\n }\n if (p === 1) {\n if (i > d0) {\n let g = jc * a, x = Array.from(r.slice(0, g)), b = Array.from(r.slice((i - jc) * a, i * a));\n return t10 === \"complex64\" && (x = Yc(x), b = Yc(b)), [\"[\" + x.map((C, w) => Xc(C, n[w], t10)).join(\", \") + \", ..., \" + b.map((C, w) => Xc(C, n[i - jc + w], t10)).join(\", \") + \"]\"];\n }\n return [\"[\" + (t10 === \"complex64\" ? Yc(r) : Array.from(r)).map((g, x) => Xc(g, n[x], t10)).join(\", \") + \"]\"];\n }\n let u = e.slice(1), c = o.slice(1), l = o[0] * a, m = [];\n if (i > d0) {\n for (let h = 0; h < jc; h++) {\n let g = h * l, x = g + l;\n m.push(...Pm(r.slice(g, x), u, t10, c, n, false));\n }\n m.push(\"...\");\n for (let h = i - jc; h < i; h++) {\n let g = h * l, x = g + l;\n m.push(...Pm(r.slice(g, x), u, t10, c, n, h === i - 1));\n }\n } else\n for (let h = 0; h < i; h++) {\n let g = h * l, x = g + l;\n m.push(...Pm(r.slice(g, x), u, t10, c, n, h === i - 1));\n }\n let d = p === 2 ? \",\" : \"\";\n m[0] = \"[\" + (i > 0 ? m[0] + d : \"\");\n for (let h = 1; h < m.length - 1; h++)\n m[h] = \" \" + m[h] + d;\n let f = `,\n`;\n for (let h = 2; h < p; h++)\n f += `\n`;\n return m[m.length - 1] = \" \" + m[m.length - 1] + \"]\" + (s ? \"\" : f), m;\n}\nfunction Yc(r) {\n let e = [];\n for (let t10 = 0; t10 < r.length; t10 += 2)\n e.push([r[t10], r[t10 + 1]]);\n return e;\n}\nvar st = class {\n constructor(e, t10, o) {\n if (this.dtype = t10, this.shape = e.slice(), this.size = We(e), o != null) {\n let n = o.length;\n $(n === this.size, () => `Length of values '${n}' does not match the size inferred by the shape '${this.size}'.`);\n }\n if (t10 === \"complex64\")\n 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).\");\n this.values = o || Sb(t10, this.size), this.strides = xs(e);\n }\n set(e, ...t10) {\n t10.length === 0 && (t10 = [0]), $(t10.length === this.rank, () => `The number of provided coordinates (${t10.length}) must match the rank (${this.rank})`);\n let o = this.locToIndex(t10);\n this.values[o] = e;\n }\n get(...e) {\n e.length === 0 && (e = [0]);\n let t10 = 0;\n for (let n of e) {\n if (n < 0 || n >= this.shape[t10]) {\n let s = `Requested out of range element at ${e}. Buffer shape=${this.shape}`;\n throw new Error(s);\n }\n t10++;\n }\n let o = e[e.length - 1];\n for (let n = 0; n < e.length - 1; ++n)\n o += this.strides[n] * e[n];\n return this.values[o];\n }\n locToIndex(e) {\n if (this.rank === 0)\n return 0;\n if (this.rank === 1)\n return e[0];\n let t10 = e[e.length - 1];\n for (let o = 0; o < e.length - 1; ++o)\n t10 += this.strides[o] * e[o];\n return t10;\n }\n indexToLoc(e) {\n if (this.rank === 0)\n return [];\n if (this.rank === 1)\n return [e];\n let t10 = new Array(this.shape.length);\n for (let o = 0; o < t10.length - 1; ++o)\n t10[o] = Math.floor(e / this.strides[o]), e -= t10[o] * this.strides[o];\n return t10[t10.length - 1] = e, t10;\n }\n get rank() {\n return this.shape.length;\n }\n toTensor() {\n return ns().makeTensor(this.values, this.shape, this.dtype);\n }\n};\nvar ns = null;\nvar Dp = null;\nvar Sz = null;\nfunction g0(r) {\n ns = r;\n}\nfunction x0(r) {\n Dp = r;\n}\nfunction y0(r) {\n Sz = r;\n}\nvar it = class {\n constructor(e, t10, o, n) {\n this.kept = false, this.isDisposedInternal = false, this.shape = e.slice(), this.dtype = t10 || \"float32\", this.size = We(e), this.strides = xs(e), this.dataId = o, this.id = n, this.rankType = this.rank < 5 ? this.rank.toString() : \"higher\";\n }\n get rank() {\n return this.shape.length;\n }\n async buffer() {\n let e = await this.data();\n return Dp.buffer(this.shape, this.dtype, e);\n }\n bufferSync() {\n return Dp.buffer(this.shape, this.dtype, this.dataSync());\n }\n async array() {\n let e = await this.data();\n return Xi(this.shape, e, this.dtype === \"complex64\");\n }\n arraySync() {\n return Xi(this.shape, this.dataSync(), this.dtype === \"complex64\");\n }\n async data() {\n this.throwIfDisposed();\n let e = ns().read(this.dataId);\n if (this.dtype === \"string\") {\n let t10 = await e;\n try {\n return t10.map((o) => Rp(o));\n } catch (o) {\n throw new Error(\"Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().\");\n }\n }\n return e;\n }\n dataToGPU(e) {\n return this.throwIfDisposed(), ns().readToGPU(this.dataId, e);\n }\n dataSync() {\n this.throwIfDisposed();\n let e = ns().readSync(this.dataId);\n if (this.dtype === \"string\")\n try {\n return e.map((t10) => Rp(t10));\n } catch (t10) {\n throw new Error(\"Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().\");\n }\n return e;\n }\n async bytes() {\n this.throwIfDisposed();\n let e = await ns().read(this.dataId);\n return this.dtype === \"string\" ? e : new Uint8Array(e.buffer);\n }\n dispose() {\n this.isDisposed || (ns().disposeTensor(this), this.isDisposedInternal = true);\n }\n get isDisposed() {\n return this.isDisposedInternal;\n }\n throwIfDisposed() {\n if (this.isDisposed)\n throw new Error(\"Tensor is disposed.\");\n }\n print(e = false) {\n return Dp.print(this, e);\n }\n clone() {\n return this.throwIfDisposed(), Dp.clone(this);\n }\n toString(e = false) {\n let t10 = this.dataSync();\n return f0(t10, this.shape, this.dtype, e);\n }\n cast(e) {\n return this.throwIfDisposed(), Dp.cast(this, e);\n }\n variable(e = true, t10, o) {\n return this.throwIfDisposed(), ns().makeVariable(this, e, t10, o);\n }\n};\nObject.defineProperty(it, Symbol.hasInstance, { value: (r) => !!r && r.data != null && r.dataSync != null && r.throwIfDisposed != null });\nfunction wz() {\n return Gc(\"Tensor\", () => it);\n}\nwz();\nvar Na = class extends it {\n constructor(e, t10, o, n) {\n super(e.shape, e.dtype, e.dataId, n), this.trainable = t10, this.name = o;\n }\n assign(e) {\n if (e.dtype !== this.dtype)\n throw new Error(`dtype of the new value (${e.dtype}) and previous value (${this.dtype}) must match`);\n if (!Or(e.shape, this.shape))\n throw new Error(`shape of the new value (${e.shape}) and previous value (${this.shape}) must match`);\n ns().disposeTensor(this), this.dataId = e.dataId, ns().incRef(this, null);\n }\n dispose() {\n ns().disposeVariable(this), this.isDisposedInternal = true;\n }\n};\nObject.defineProperty(Na, Symbol.hasInstance, { value: (r) => r instanceof it && r.assign != null && r.assign instanceof Function });\nvar C0 = {};\nGe(C0, { assertTypesMatch: () => Ub, getTensorsInContainer: () => Qc, isTensorInList: () => vz, makeTypesMatch: () => De });\nvar Lb;\n(function(r) {\n r.R0 = \"R0\", r.R1 = \"R1\", r.R2 = \"R2\", r.R3 = \"R3\", r.R4 = \"R4\", r.R5 = \"R5\", r.R6 = \"R6\";\n})(Lb || (Lb = {}));\nvar Bb;\n(function(r) {\n r.float32 = \"float32\", r.int32 = \"int32\", r.bool = \"int32\", r.complex64 = \"complex64\";\n})(Bb || (Bb = {}));\nvar Vb;\n(function(r) {\n r.float32 = \"float32\", r.int32 = \"int32\", r.bool = \"bool\", r.complex64 = \"complex64\";\n})(Vb || (Vb = {}));\nvar zb;\n(function(r) {\n r.float32 = \"float32\", r.int32 = \"float32\", r.bool = \"float32\", r.complex64 = \"complex64\";\n})(zb || (zb = {}));\nvar Wb;\n(function(r) {\n r.float32 = \"complex64\", r.int32 = \"complex64\", r.bool = \"complex64\", r.complex64 = \"complex64\";\n})(Wb || (Wb = {}));\nvar Iz = { float32: zb, int32: Bb, bool: Vb, complex64: Wb };\nfunction dt(r, e) {\n if (r === \"string\" || e === \"string\") {\n if (r === \"string\" && e === \"string\")\n return \"string\";\n throw new Error(`Can not upcast ${r} with ${e}`);\n }\n return Iz[r][e];\n}\nfunction Ta(r) {\n return dt(r, \"int32\");\n}\nfunction De(r, e) {\n if (r.dtype === e.dtype)\n return [r, e];\n let t10 = dt(r.dtype, e.dtype);\n return [r.cast(t10), e.cast(t10)];\n}\nfunction Ub(r, e) {\n $(r.dtype === e.dtype, () => `The dtypes of the first(${r.dtype}) and second(${e.dtype}) input must match`);\n}\nfunction vz(r, e) {\n return e.some((t10) => t10.id === r.id);\n}\nfunction Qc(r) {\n let e = [];\n return b0(r, e, /* @__PURE__ */ new Set()), e;\n}\nfunction b0(r, e, t10) {\n if (r == null)\n return;\n if (r instanceof it) {\n e.push(r);\n return;\n }\n if (!kz(r))\n return;\n let o = r;\n for (let n in o) {\n let s = o[n];\n t10.has(s) || (t10.add(s), b0(s, e, t10));\n }\n}\nfunction kz(r) {\n return Array.isArray(r) || typeof r == \"object\";\n}\nfunction Gb(r) {\n return r.kernelName != null;\n}\nvar Mm = class {\n constructor() {\n 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 = /* @__PURE__ */ new WeakMap(), this.profiling = false, this.activeProfile = { newBytes: 0, newTensors: 0, peakBytes: 0, kernels: [], result: null, get kernelNames() {\n return Array.from(new Set(this.kernels.map((e) => e.name)));\n } };\n }\n dispose() {\n for (let e in this.registeredVariables)\n this.registeredVariables[e].dispose();\n }\n};\nvar vi = class {\n constructor(e) {\n this.ENV = e, this.registry = {}, this.registryFactory = {}, this.pendingBackendInitId = 0, this.state = new Mm();\n }\n async ready() {\n if (this.pendingBackendInit != null)\n return this.pendingBackendInit.then(() => {\n });\n if (this.backendInstance != null)\n return;\n let e = this.getSortedBackends();\n for (let t10 = 0; t10 < e.length; t10++) {\n let o = e[t10];\n if (await this.initializeBackend(o).success) {\n await this.setBackend(o);\n return;\n }\n }\n throw new Error(\"Could not initialize any backends, all backend initializations failed.\");\n }\n get backend() {\n if (this.pendingBackendInit != null)\n throw new Error(`Backend '${this.backendName}' has not yet been initialized. Make sure to await tf.ready() or await tf.setBackend() before calling other methods`);\n if (this.backendInstance == null) {\n let { name: e, asyncInit: t10 } = this.initializeBackendsAndReturnBest();\n if (t10)\n throw new Error(`The highest priority backend '${e}' has not yet been initialized. Make sure to await tf.ready() or await tf.setBackend() before calling other methods`);\n this.setBackend(e);\n }\n return this.backendInstance;\n }\n backendNames() {\n return Object.keys(this.registryFactory);\n }\n findBackend(e) {\n if (!(e in this.registry))\n if (e in this.registryFactory) {\n let { asyncInit: t10 } = this.initializeBackend(e);\n if (t10)\n return null;\n } else\n return null;\n return this.registry[e];\n }\n findBackendFactory(e) {\n return e in this.registryFactory ? this.registryFactory[e].factory : null;\n }\n registerBackend(e, t10, o = 1) {\n return e in this.registryFactory ? (Ps(`${e} backend was already registered. Reusing existing backend factory.`), false) : (this.registryFactory[e] = { factory: t10, priority: o }, true);\n }\n async setBackend(e) {\n if (this.registryFactory[e] == null)\n throw new Error(`Backend name '${e}' not found in registry`);\n if (this.backendName = e, this.registry[e] == null) {\n this.backendInstance = null;\n let { success: t10, asyncInit: o } = this.initializeBackend(e);\n if (!(o ? await t10 : t10))\n return false;\n }\n return this.backendInstance = this.registry[e], this.setupRegisteredKernels(), this.profiler = new Om(this.backendInstance), true;\n }\n setupRegisteredKernels() {\n Rm(this.backendName).forEach((t10) => {\n t10.setupFunc != null && t10.setupFunc(this.backendInstance);\n });\n }\n disposeRegisteredKernels(e) {\n Rm(e).forEach((o) => {\n o.disposeFunc != null && o.disposeFunc(this.registry[e]);\n });\n }\n initializeBackend(e) {\n let t10 = this.registryFactory[e];\n if (t10 == null)\n throw new Error(`Cannot initialize backend ${e}, no registration found.`);\n try {\n let o = t10.factory();\n if (o && !(o instanceof Zr) && typeof o.then == \"function\") {\n let n = ++this.pendingBackendInitId, s = o.then((a) => n < this.pendingBackendInitId ? false : (this.registry[e] = a, this.pendingBackendInit = null, true)).catch((a) => (n < this.pendingBackendInitId || (this.pendingBackendInit = null, Ps(`Initialization of backend ${e} failed`), Ps(a.stack || a.message)), false));\n return this.pendingBackendInit = s, { success: s, asyncInit: true };\n } else\n return this.registry[e] = o, { success: true, asyncInit: false };\n } catch (o) {\n return Ps(`Initialization of backend ${e} failed`), Ps(o.stack || o.message), { success: false, asyncInit: false };\n }\n }\n removeBackend(e) {\n if (!(e in this.registryFactory))\n throw new Error(`${e} backend not found in registry`);\n this.backendName === e && this.pendingBackendInit != null && this.pendingBackendInitId++, e in this.registry && (this.disposeRegisteredKernels(e), this.registry[e].dispose(), delete this.registry[e]), delete this.registryFactory[e], this.backendName === e && (this.pendingBackendInit = null, this.backendName = null, this.backendInstance = null);\n }\n getSortedBackends() {\n if (Object.keys(this.registryFactory).length === 0)\n throw new Error(\"No backend found in registry.\");\n return Object.keys(this.registryFactory).sort((e, t10) => this.registryFactory[t10].priority - this.registryFactory[e].priority);\n }\n initializeBackendsAndReturnBest() {\n let e = this.getSortedBackends();\n for (let t10 = 0; t10 < e.length; t10++) {\n let o = e[t10], { success: n, asyncInit: s } = this.initializeBackend(o);\n if (s || n)\n return { name: o, asyncInit: s };\n }\n throw new Error(\"Could not initialize any backends, all backend initializations failed.\");\n }\n moveData(e, t10) {\n let o = this.state.tensorInfo.get(t10), n = o.backend, s = this.readSync(t10), a = n.refCount(t10);\n n.disposeData(t10, true), o.backend = e, e.move(t10, s, o.shape, o.dtype, a), this.shouldCheckForMemLeaks() && this.state.numDataMovesStack[this.state.numDataMovesStack.length - 1]++;\n }\n tidy(e, t10) {\n let o = null;\n if (t10 == null) {\n if (typeof e != \"function\")\n throw new Error(\"Please provide a function to tidy()\");\n t10 = e;\n } else {\n if (typeof e != \"string\" && !(e instanceof String))\n throw new Error(\"When calling with two arguments, the first argument to tidy() must be a string\");\n if (typeof t10 != \"function\")\n throw new Error(\"When calling with two arguments, the 2nd argument to tidy() must be a function\");\n o = e;\n }\n let n;\n return this.scopedRun(() => this.startScope(o), () => this.endScope(n), () => (n = t10(), n instanceof Promise && console.error(\"Cannot return a Promise inside of tidy.\"), n));\n }\n scopedRun(e, t10, o) {\n e();\n try {\n let n = o();\n return t10(), n;\n } catch (n) {\n throw t10(), n;\n }\n }\n nextTensorId() {\n return vi.nextTensorId++;\n }\n nextVariableId() {\n return vi.nextVariableId++;\n }\n clone(e) {\n let t10 = T.runKernel(mo, { x: e }), o = { x: e }, n = (a) => ({ x: () => {\n let i = \"float32\", p = { x: a }, u = { dtype: i };\n return T.runKernel(co, p, u);\n } }), s = [];\n return this.addTapeNode(this.state.activeScope.name, o, [t10], n, s, {}), t10;\n }\n runKernel(e, t10, o) {\n if (this.backendName == null && this.backend, !(Kc(e, this.backendName) != null))\n throw new Error(`Kernel '${e}' not registered for backend '${this.backendName}'`);\n return this.runKernelFunc({ kernelName: e, inputs: t10, attrs: o });\n }\n shouldCheckForMemLeaks() {\n return this.ENV.getBool(\"IS_TEST\");\n }\n checkKernelForMemLeak(e, t10, o) {\n let n = this.backend.numDataIds(), s = 0;\n o.forEach((p) => {\n s += p.dtype === \"complex64\" ? 3 : 1;\n });\n let a = this.state.numDataMovesStack[this.state.numDataMovesStack.length - 1], i = n - t10 - s - a;\n if (i > 0)\n throw new Error(`Backend '${this.backendName}' has an internal memory leak (${i} data ids) after running '${e}'`);\n }\n runKernelFunc(e) {\n let t10, o = [], n = this.isTapeOn(), s = this.state.numBytes, a = this.state.numTensors;\n this.shouldCheckForMemLeaks() && this.state.numDataMovesStack.push(0);\n let i;\n this.backendName == null && this.backend;\n let p, u = Gb(e) ? e.kernelName : this.state.activeScope != null ? this.state.activeScope.name : \"\";\n if (Gb(e)) {\n let { kernelName: f, inputs: h, attrs: g } = e;\n this.backendName == null && this.backend;\n let x = Kc(f, this.backendName);\n $(x != null, () => `Cannot find registered kernel '${f}' for backend '${this.backendName}'`), i = () => {\n let b = this.backend.numDataIds();\n p = x.kernelFunc({ inputs: h, attrs: g, backend: this.backend });\n let C = Array.isArray(p) ? p : [p];\n this.shouldCheckForMemLeaks() && this.checkKernelForMemLeak(f, b, C);\n let w = C.map((k) => k.rank != null ? k : this.makeTensorFromTensorInfo(k));\n if (n) {\n let k = this.getTensorsForGradient(f, h, w);\n o = this.saveTensorsForBackwardMode(k);\n }\n return w;\n };\n } else {\n let { forwardFunc: f } = e, h = (g) => {\n n && (o = g.map((x) => this.keep(this.clone(x))));\n };\n i = () => {\n let g = this.backend.numDataIds();\n p = this.tidy(() => f(this.backend, h));\n let x = Array.isArray(p) ? p : [p];\n return this.shouldCheckForMemLeaks() && this.checkKernelForMemLeak(u, g, x), x;\n };\n }\n let { inputs: c, attrs: l } = e, m = Gb(e) ? null : e.backwardsFunc, d;\n return this.scopedRun(() => this.state.kernelDepth++, () => this.state.kernelDepth--, () => {\n !this.ENV.getBool(\"DEBUG\") && !this.state.profiling ? t10 = i() : (d = this.profiler.profileKernel(u, c, () => i()), this.ENV.getBool(\"DEBUG\") && this.profiler.logKernelProfile(d), t10 = d.outputs);\n }), n && this.addTapeNode(u, c, t10, m, o, l), this.state.profiling && this.state.activeProfile.kernels.push({ name: u, bytesAdded: this.state.numBytes - s, totalBytesSnapshot: this.state.numBytes, tensorsAdded: this.state.numTensors - a, totalTensorsSnapshot: this.state.numTensors, inputShapes: Object.keys(c).map((f) => c[f] != null ? c[f].shape : null), outputShapes: t10.map((f) => f.shape), kernelTimeMs: d.timeMs, extraInfo: d.extraInfo }), Array.isArray(p) ? t10 : t10[0];\n }\n saveTensorsForBackwardMode(e) {\n return e.map((o) => this.keep(this.clone(o)));\n }\n getTensorsForGradient(e, t10, o) {\n let n = Eb(e);\n if (n != null) {\n let s = n.inputsToSave || [], a = n.outputsToSave || [], i;\n n.saveAllInputs ? ($(Array.isArray(t10), () => \"saveAllInputs is true, expected inputs to be an array.\"), i = Object.keys(t10).map((u) => t10[u])) : i = s.map((u) => t10[u]);\n let p = o.filter((u, c) => a[c]);\n return i.concat(p);\n }\n return [];\n }\n makeTensor(e, t10, o, n) {\n if (e == null)\n throw new Error(\"Values passed to engine.makeTensor() are null\");\n o = o || \"float32\", n = n || this.backend;\n let s = e;\n o === \"string\" && Oo(e[0]) && (s = e.map((p) => Ii(p)));\n let a = n.write(s, t10, o), i = new it(t10, o, a, this.nextTensorId());\n if (this.trackTensor(i, n), o === \"string\") {\n let p = this.state.tensorInfo.get(a), u = vb(s);\n this.state.numBytes += u - p.bytes, p.bytes = u;\n }\n return i;\n }\n makeTensorFromDataId(e, t10, o, n) {\n o = o || \"float32\";\n let s = { dataId: e, shape: t10, dtype: o };\n return this.makeTensorFromTensorInfo(s, n);\n }\n makeTensorFromTensorInfo(e, t10) {\n let { dataId: o, shape: n, dtype: s } = e, a = new it(n, s, o, this.nextTensorId());\n return this.trackTensor(a, t10), a;\n }\n makeVariable(e, t10 = true, o, n) {\n o = o || this.nextVariableId().toString(), n != null && n !== e.dtype && (e = e.cast(n));\n let s = new Na(e, t10, o, this.nextTensorId());\n if (this.state.registeredVariables[s.name] != null)\n throw new Error(`Variable with name ${s.name} was already registered`);\n return this.state.registeredVariables[s.name] = s, this.incRef(s, this.backend), s;\n }\n trackTensor(e, t10) {\n this.state.numTensors++, e.dtype === \"string\" && this.state.numStringTensors++;\n let o = 0;\n e.dtype !== \"complex64\" && e.dtype !== \"string\" && (o = e.size * up(e.dtype)), this.state.numBytes += o, this.state.tensorInfo.has(e.dataId) || (this.state.numDataBuffers++, this.state.tensorInfo.set(e.dataId, { backend: t10 || this.backend, dtype: e.dtype, shape: e.shape, bytes: o })), e instanceof Na || this.track(e);\n }\n incRef(e, t10) {\n this.trackTensor(e, t10), this.backend.incRef(e.dataId);\n }\n removeDataId(e, t10) {\n this.state.tensorInfo.has(e) && this.state.tensorInfo.get(e).backend === t10 && (this.state.tensorInfo.delete(e), this.state.numDataBuffers--);\n }\n disposeTensor(e) {\n if (!this.state.tensorInfo.has(e.dataId))\n return;\n let t10 = this.state.tensorInfo.get(e.dataId);\n if (this.state.numTensors--, e.dtype === \"string\" && (this.state.numStringTensors--, this.state.numBytes -= t10.bytes), e.dtype !== \"complex64\" && e.dtype !== \"string\") {\n let o = e.size * up(e.dtype);\n this.state.numBytes -= o;\n }\n t10.backend.disposeData(e.dataId) && this.removeDataId(e.dataId, t10.backend);\n }\n disposeVariables() {\n for (let e in this.state.registeredVariables) {\n let t10 = this.state.registeredVariables[e];\n this.disposeVariable(t10);\n }\n }\n disposeVariable(e) {\n this.disposeTensor(e), this.state.registeredVariables[e.name] != null && delete this.state.registeredVariables[e.name];\n }\n memory() {\n let e = this.backend.memory();\n return e.numTensors = this.state.numTensors, e.numDataBuffers = this.state.numDataBuffers, e.numBytes = this.state.numBytes, this.state.numStringTensors > 0 && (e.unreliable = true, e.reasons == null && (e.reasons = []), e.reasons.push(\"Memory usage by string tensors is approximate (2 bytes per character)\")), e;\n }\n async profile(e) {\n this.state.profiling = true;\n let t10 = this.state.numBytes, o = this.state.numTensors;\n this.state.activeProfile.kernels = [], this.state.activeProfile.result = await e(), this.state.profiling = false, this.state.activeProfile.peakBytes = Math.max(...this.state.activeProfile.kernels.map((n) => n.totalBytesSnapshot)), this.state.activeProfile.newBytes = this.state.numBytes - t10, this.state.activeProfile.newTensors = this.state.numTensors - o;\n for (let n of this.state.activeProfile.kernels)\n n.kernelTimeMs = await n.kernelTimeMs, n.extraInfo = await n.extraInfo;\n return this.state.activeProfile;\n }\n isTapeOn() {\n return this.state.gradientDepth > 0 && this.state.kernelDepth === 0;\n }\n addTapeNode(e, t10, o, n, s, a) {\n let i = { id: this.state.nextTapeNodeId++, kernelName: e, inputs: t10, outputs: o, saved: s }, p = Eb(e);\n p != null && (n = p.gradFunc), n != null && (i.gradient = (u) => (u = u.map((c, l) => {\n if (c == null) {\n let m = o[l], d = lp(m.size, m.dtype);\n return this.makeTensor(d, m.shape, m.dtype);\n }\n return c;\n }), n(u.length > 1 ? u : u[0], s, a))), this.state.activeTape.push(i);\n }\n keep(e) {\n return e.kept = true, e;\n }\n startTape() {\n this.state.gradientDepth === 0 && (this.state.activeTape = []), this.state.gradientDepth++;\n }\n endTape() {\n this.state.gradientDepth--;\n }\n startScope(e) {\n let t10 = { track: [], name: \"unnamed scope\", id: this.state.nextScopeId++ };\n e && (t10.name = e), this.state.scopeStack.push(t10), this.state.activeScope = t10;\n }\n endScope(e) {\n let t10 = Qc(e), o = new Set(t10.map((s) => s.id));\n for (let s = 0; s < this.state.activeScope.track.length; s++) {\n let a = this.state.activeScope.track[s];\n !a.kept && !o.has(a.id) && a.dispose();\n }\n let n = this.state.scopeStack.pop();\n this.state.activeScope = this.state.scopeStack.length === 0 ? null : this.state.scopeStack[this.state.scopeStack.length - 1], t10.forEach((s) => {\n !s.kept && s.scopeId === n.id && this.track(s);\n });\n }\n gradients(e, t10, o, n = false) {\n if ($(t10.length > 0, () => \"gradients() received an empty list of xs.\"), o != null && o.dtype !== \"float32\")\n throw new Error(`dy must have 'float32' dtype, but has '${o.dtype}'`);\n let s = this.scopedRun(() => this.startTape(), () => this.endTape(), () => this.tidy(\"forward\", e));\n $(s instanceof it, () => \"The result y returned by f() must be a tensor.\");\n let a = l0(this.state.activeTape, t10, s);\n if (!n && a.length === 0 && t10.length > 0)\n 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.\");\n return this.tidy(\"backward\", () => {\n let i = {};\n i[s.id] = o == null ? Nz(s.shape) : o, m0(i, a, (u) => this.tidy(u), Tz);\n let p = t10.map((u) => i[u.id]);\n return this.state.gradientDepth === 0 && (this.state.activeTape.forEach((u) => {\n for (let c of u.saved)\n c.dispose();\n }), this.state.activeTape = null), { value: s, grads: p };\n });\n }\n customGrad(e) {\n return $(gs(e), () => \"The f passed in customGrad(f) must be a function.\"), (...t10) => {\n $(t10.every((i) => i instanceof it), () => \"The args passed in customGrad(f)(x1, x2,...) must all be tensors\");\n let o, n = {};\n t10.forEach((i, p) => {\n n[p] = i;\n });\n let s = (i, p) => (o = e(...t10, p), $(o.value instanceof it, () => \"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor\"), $(gs(o.gradFunc), () => \"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function.\"), o.value), a = (i, p) => {\n let u = o.gradFunc(i, p), c = Array.isArray(u) ? u : [u];\n $(c.length === t10.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(...).\"), $(c.every((m) => m instanceof it), () => \"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors.\");\n let l = {};\n return c.forEach((m, d) => {\n l[d] = () => m;\n }), l;\n };\n return this.runKernelFunc({ forwardFunc: s, backwardsFunc: a, inputs: n });\n };\n }\n readSync(e) {\n return this.state.tensorInfo.get(e).backend.readSync(e);\n }\n read(e) {\n return this.state.tensorInfo.get(e).backend.read(e);\n }\n readToGPU(e, t10) {\n return this.state.tensorInfo.get(e).backend.readToGPU(e, t10);\n }\n async time(e) {\n let t10 = ou(), o = await this.backend.time(e);\n return o.wallMs = ou() - t10, o;\n }\n track(e) {\n return this.state.activeScope != null && (e.scopeId = this.state.activeScope.id, this.state.activeScope.track.push(e)), e;\n }\n get registeredVariables() {\n return this.state.registeredVariables;\n }\n reset() {\n this.pendingBackendInitId++, this.state.dispose(), this.ENV.reset(), this.state = new Mm();\n for (let e in this.registry)\n this.disposeRegisteredKernels(e), this.registry[e].dispose(), delete this.registry[e];\n this.backendName = null, this.backendInstance = null, this.pendingBackendInit = null;\n }\n};\nvi.nextTensorId = 0;\nvi.nextVariableId = 0;\nfunction Nz(r) {\n let e = Wc(We(r), \"float32\");\n return T.makeTensor(e, r, \"float32\");\n}\nfunction Hb() {\n let r = Tb();\n if (r._tfengine == null) {\n let e = new Uc(r);\n r._tfengine = new vi(e);\n }\n return jI(r._tfengine.ENV), g0(() => r._tfengine), r._tfengine;\n}\nvar T = Hb();\nfunction Tz(r, e) {\n let t10 = { a: r, b: e };\n return T.runKernel(eo, t10);\n}\nvar ki = {};\nGe(ki, { isBrowser: () => qb, isMobile: () => Ez, mockIsMobile: () => $z });\nfunction _z() {\n return typeof navigator != \"undefined\" && navigator != null;\n}\nvar Kb;\nfunction $z(r) {\n Kb = r;\n}\nfunction Ez(r) {\n if (Kb !== void 0)\n return Kb;\n if (r || _z()) {\n if (r || (r = navigator), r.product === \"ReactNative\")\n return true;\n let e = r.userAgent || r.vendor || (typeof window != \"undefined\" ? window.opera : \"\");\n if (!e) {\n let t10 = r;\n return t10.userAgentData && t10.userAgentData.mobile;\n }\n 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(e) || /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(e.substr(0, 4));\n }\n return false;\n}\nfunction qb() {\n return typeof window != \"undefined\" && window.document != null || typeof WorkerGlobalScope != \"undefined\";\n}\nvar oo = O();\noo.registerFlag(\"DEBUG\", () => false, (r) => {\n r && 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.\");\n});\noo.registerFlag(\"IS_BROWSER\", () => qb());\noo.registerFlag(\"IS_NODE\", () => typeof process != \"undefined\" && typeof process.versions != \"undefined\" && typeof process.versions.node != \"undefined\");\noo.registerFlag(\"IS_CHROME\", () => typeof navigator != \"undefined\" && navigator != null && navigator.userAgent != null && /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor));\noo.registerFlag(\"PROD\", () => false);\noo.registerFlag(\"TENSORLIKE_CHECK_SHAPE_CONSISTENCY\", () => oo.getBool(\"DEBUG\"));\noo.registerFlag(\"DEPRECATION_WARNINGS_ENABLED\", () => true);\noo.registerFlag(\"IS_TEST\", () => false);\noo.registerFlag(\"CHECK_COMPUTATION_FOR_ERRORS\", () => true);\noo.registerFlag(\"WRAP_TO_IMAGEBITMAP\", () => false);\noo.registerFlag(\"CANVAS2D_WILL_READ_FREQUENTLY_FOR_GPU\", () => false);\noo.registerFlag(\"USE_SETTIMEOUTCUSTOM\", () => false);\nfunction or(r, e) {\n let t10 = r;\n if (Bt(r))\n return e === \"string\" ? [] : [r.length];\n if (typeof r == \"object\") {\n if (\"texture\" in r) {\n let s = r.channels || \"RGBA\";\n return [r.height, r.width * s.length];\n } else if (\"buffer\" in r && !(r.buffer instanceof ArrayBuffer))\n return [r.buffer.size / (e == null ? 4 : up(e))];\n }\n if (!Array.isArray(r))\n return [];\n let n = [];\n for (; Array.isArray(t10) || Bt(t10) && e !== \"string\"; )\n n.push(t10.length), t10 = t10[0];\n return Array.isArray(r) && O().getBool(\"TENSORLIKE_CHECK_SHAPE_CONSISTENCY\") && w0(r, n, []), n;\n}\nfunction w0(r, e, t10) {\n if (t10 = t10 || [], !Array.isArray(r) && !Bt(r)) {\n $(e.length === 0, () => `Element arr[${t10.join(\"][\")}] is a primitive, but should be an array/TypedArray of ${e[0]} elements`);\n return;\n }\n $(e.length > 0, () => `Element arr[${t10.join(\"][\")}] should be a primitive, but is an array of ${r.length} elements`), $(r.length === e[0], () => `Element arr[${t10.join(\"][\")}] should have ${e[0]} elements, but has ${r.length} elements`);\n let o = e.slice(1);\n for (let n = 0; n < r.length; ++n)\n w0(r[n], o, t10.concat(n));\n}\nfunction S0(r, e, t10, o) {\n if (r !== \"string_or_numeric\") {\n if (r == null)\n throw new Error(\"Expected dtype cannot be null.\");\n if (r !== \"numeric\" && r !== e || r === \"numeric\" && e === \"string\")\n throw new Error(`Argument '${t10}' passed to '${o}' must be ${r} tensor, but got ${e} tensor`);\n }\n}\nfunction v(r, e, t10, o = \"numeric\") {\n if (r instanceof it)\n return S0(o, r.dtype, e, t10), r;\n let n = pp(r);\n if (n !== \"string\" && [\"bool\", \"int32\", \"float32\"].indexOf(o) >= 0 && (n = o), S0(o, n, e, t10), r == null || !Bt(r) && !Array.isArray(r) && typeof r != \"number\" && typeof r != \"boolean\" && typeof r != \"string\") {\n let p = r == null ? \"null\" : r.constructor.name;\n throw new Error(`Argument '${e}' passed to '${t10}' must be a Tensor or TensorLike, but got '${p}'`);\n }\n let s = or(r, n);\n !Bt(r) && !Array.isArray(r) && (r = [r]);\n let i = n !== \"string\" ? Ap(r, n) : os(r, [], true);\n return T.makeTensor(i, s, n);\n}\nfunction _a(r, e, t10, o = \"numeric\") {\n if (!Array.isArray(r))\n throw new Error(`Argument ${e} passed to ${t10} must be a \\`Tensor[]\\` or \\`TensorLike[]\\``);\n return r.map((s, a) => v(s, `${e}[${a}]`, t10, o));\n}\nvar jb = \"__op\";\nfunction N(r) {\n let e = Object.keys(r);\n if (e.length !== 1)\n throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${e.length} keys.`);\n let t10 = e[0], o = r[t10];\n t10.endsWith(\"_\") && (t10 = t10.substring(0, t10.length - 1)), t10 = t10 + jb;\n let n = (...s) => {\n T.startScope(t10);\n try {\n let a = o(...s);\n return Qi(a) && console.error(\"Cannot return a Promise inside of tidy.\"), T.endScope(a), a;\n } catch (a) {\n throw T.endScope(null), a;\n }\n };\n return Object.defineProperty(n, \"name\", { value: t10, configurable: true }), n;\n}\nfunction Az(r, e) {\n let t10 = v(r, \"real\", \"complex\"), o = v(e, \"imag\", \"complex\");\n gt(t10.shape, o.shape, `real and imag shapes, ${t10.shape} and ${o.shape}, must match in call to tf.complex().`);\n let n = { real: t10, imag: o };\n return T.runKernel(ri, n);\n}\nvar Tr = N({ complex_: Az });\nfunction xr(r, e, t10, o) {\n if (o == null)\n o = pp(r);\n else if (o === \"complex64\")\n throw new Error(\"Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).\");\n if (typeof r == \"object\" && (\"texture\" in r || \"buffer\" in r && !(r.buffer instanceof ArrayBuffer))) {\n if (o !== \"float32\" && o !== \"int32\")\n throw new Error(`Creating tensor from GPU data only supports 'float32'|'int32' dtype, while the dtype is ${o}.`);\n return T.backend.createTensorFromGPUData(r, e || t10, o);\n }\n if (!Bt(r) && !Array.isArray(r) && typeof r != \"number\" && typeof r != \"boolean\" && typeof r != \"string\")\n throw new Error(\"values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray\");\n if (e != null) {\n bt(e);\n let n = We(e), s = We(t10);\n $(n === s, () => `Based on the provided shape, [${e}], the tensor should have ${n} values but has ${s}`);\n for (let a = 0; a < t10.length; ++a) {\n let i = t10[a], p = a === t10.length - 1 ? i !== We(e.slice(a)) : true;\n $(t10[a] === e[a] || !p, () => `Error creating a new Tensor. Inferred shape (${t10}) does not match the provided shape (${e}). `);\n }\n }\n return !Bt(r) && !Array.isArray(r) && (r = [r]), e = e || t10, r = o !== \"string\" ? Ap(r, o) : os(r, [], true), T.makeTensor(r, e, o);\n}\nfunction nr(r, e, t10) {\n let o = or(r, t10);\n return xr(r, e, o, t10);\n}\nvar Zc = { float32: 4, float16: 2, int32: 4, uint16: 2, uint8: 1, bool: 1, complex64: 8 };\nvar Lm = 4;\nasync function v0(r, e) {\n let t10 = [], o = [], n = Array.isArray(r) ? r.map((a) => a.name) : Object.keys(r);\n for (let a = 0; a < n.length; ++a) {\n let i = n[a], p = Array.isArray(r) ? r[a].tensor : r[i];\n if (p.dtype !== \"float32\" && p.dtype !== \"int32\" && p.dtype !== \"bool\" && p.dtype !== \"string\" && p.dtype !== \"complex64\")\n throw new Error(`Unsupported dtype in weight '${i}': ${p.dtype}`);\n let u = { name: i, shape: p.shape, dtype: p.dtype };\n if (p.dtype === \"string\") {\n let c = new Promise(async (l) => {\n let m = await p.bytes(), d = m.reduce((g, x) => g + x.length, 0) + Lm * m.length, f = new Uint8Array(d), h = 0;\n for (let g = 0; g < m.length; g++) {\n let x = m[g], b = new Uint8Array(new Uint32Array([x.length]).buffer);\n f.set(b, h), h += Lm, f.set(x, h), h += x.length;\n }\n l(f);\n });\n o.push(c);\n } else\n o.push(p.data());\n e != null && (u.group = e), t10.push(u);\n }\n let s = await Promise.all(o);\n return { data: Rz(s), specs: t10 };\n}\nfunction Bm(r, e) {\n let t10 = {}, o, n = 0;\n for (let s of e) {\n let a = s.name, i = s.dtype, p = s.shape, u = We(p), c;\n if (\"quantization\" in s) {\n let l = s.quantization;\n if (l.dtype === \"uint8\" || l.dtype === \"uint16\") {\n if (!(\"min\" in l && \"scale\" in l))\n throw new Error(`Weight ${s.name} with quantization ${l.dtype} doesn't have corresponding metadata min and scale.`);\n } else if (l.dtype === \"float16\") {\n if (i !== \"float32\")\n throw new Error(`Weight ${s.name} is quantized with ${l.dtype} which only supports weights of type float32 not ${i}.`);\n } else\n throw new Error(`Weight ${s.name} has unknown quantization dtype ${l.dtype}. Supported quantization dtypes are: 'uint8', 'uint16', and 'float16'.`);\n let m = Zc[l.dtype], d = r.slice(n, n + u * m), f = l.dtype === \"uint8\" ? new Uint8Array(d) : new Uint16Array(d);\n if (i === \"float32\")\n if (l.dtype === \"uint8\" || l.dtype === \"uint16\") {\n c = new Float32Array(f.length);\n for (let h = 0; h < f.length; h++) {\n let g = f[h];\n c[h] = g * l.scale + l.min;\n }\n } else if (l.dtype === \"float16\")\n o === void 0 && (o = Pz()), c = o(f);\n else\n throw new Error(`Unsupported quantization type ${l.dtype} for weight type float32.`);\n else if (i === \"int32\") {\n if (l.dtype !== \"uint8\" && l.dtype !== \"uint16\")\n throw new Error(`Unsupported quantization type ${l.dtype} for weight type int32.`);\n c = new Int32Array(f.length);\n for (let h = 0; h < f.length; h++) {\n let g = f[h];\n c[h] = Math.round(g * l.scale + l.min);\n }\n } else\n throw new Error(`Unsupported dtype in weight '${a}': ${i}`);\n n += u * m;\n } else if (i === \"string\") {\n let l = We(s.shape);\n c = [];\n for (let m = 0; m < l; m++) {\n let d = new Uint32Array(r.slice(n, n + Lm))[0];\n n += Lm;\n let f = new Uint8Array(r.slice(n, n + d));\n c.push(f), n += d;\n }\n } else {\n let l = Zc[i], m = r.slice(n, n + u * l);\n if (i === \"float32\")\n c = new Float32Array(m);\n else if (i === \"int32\")\n c = new Int32Array(m);\n else if (i === \"bool\")\n c = new Uint8Array(m);\n else if (i === \"complex64\") {\n c = new Float32Array(m);\n let d = new Float32Array(c.length / 2), f = new Float32Array(c.length / 2);\n for (let x = 0; x < d.length; x++)\n d[x] = c[x * 2], f[x] = c[x * 2 + 1];\n let h = nr(d, p, \"float32\"), g = nr(f, p, \"float32\");\n t10[a] = Tr(h, g), h.dispose(), g.dispose();\n } else\n throw new Error(`Unsupported dtype in weight '${a}': ${i}`);\n n += u * l;\n }\n i !== \"complex64\" && (t10[a] = nr(c, p, i));\n }\n return t10;\n}\nfunction Rz(r) {\n if (r === null)\n throw new Error(`Invalid input value: ${JSON.stringify(r)}`);\n let e = 0, t10 = [];\n r.forEach((s) => {\n if (e += s.byteLength, t10.push(s.byteLength === s.buffer.byteLength ? s : new s.constructor(s)), !(s instanceof Float32Array || s instanceof Int32Array || s instanceof Uint8Array))\n throw new Error(`Unsupported TypedArray subtype: ${s.constructor.name}`);\n });\n let o = new Uint8Array(e), n = 0;\n return t10.forEach((s) => {\n o.set(new Uint8Array(s.buffer), n), n += s.byteLength;\n }), o.buffer;\n}\nvar Xb = typeof Buffer != \"undefined\" && (typeof Blob == \"undefined\" || typeof atob == \"undefined\" || typeof btoa == \"undefined\");\nfunction I0(r) {\n return Xb ? Buffer.byteLength(r) : new Blob([r]).size;\n}\nfunction k0(r) {\n if (Xb)\n return Buffer.from(r).toString(\"base64\");\n let e = new Uint8Array(r), t10 = \"\";\n for (let o = 0, n = e.length; o < n; o++)\n t10 += String.fromCharCode(e[o]);\n return btoa(t10);\n}\nfunction N0(r) {\n if (Xb) {\n let o = Buffer.from(r, \"base64\");\n return o.buffer.slice(o.byteOffset, o.byteOffset + o.byteLength);\n }\n let e = atob(r), t10 = new Uint8Array(e.length);\n for (let o = 0; o < e.length; ++o)\n t10.set([e.charCodeAt(o)], o);\n return t10.buffer;\n}\nfunction Fp(r) {\n if (r.length === 1)\n return r[0];\n let e = 0;\n r.forEach((n) => {\n e += n.byteLength;\n });\n let t10 = new Uint8Array(e), o = 0;\n return r.forEach((n) => {\n t10.set(new Uint8Array(n), o), o += n.byteLength;\n }), t10.buffer;\n}\nfunction Yb(r) {\n let e = \"/\";\n for (r = r.trim(); r.endsWith(e); )\n r = r.slice(0, r.length - 1);\n let t10 = r.split(e);\n return t10[t10.length - 1];\n}\nfunction Vm(r, e) {\n let t10 = { modelTopology: r.modelTopology, format: r.format, generatedBy: r.generatedBy, convertedBy: r.convertedBy, weightsManifest: e };\n return r.signature != null && (t10.signature = r.signature), r.userDefinedMetadata != null && (t10.userDefinedMetadata = r.userDefinedMetadata), r.modelInitializer != null && (t10.modelInitializer = r.modelInitializer), r.initializerSignature != null && (t10.initializerSignature = r.initializerSignature), r.trainingConfig != null && (t10.trainingConfig = r.trainingConfig), t10;\n}\nfunction Qb(r, e, t10) {\n let o = { modelTopology: r.modelTopology, format: r.format, generatedBy: r.generatedBy, convertedBy: r.convertedBy };\n if (r.trainingConfig != null && (o.trainingConfig = r.trainingConfig), r.weightsManifest != null) {\n if (!e)\n throw new Error(\"modelJSON has weightsManifest but weightSpecs is null\");\n if (!t10)\n throw new Error(\"modelJSON has weightsManifest but weightData is null\");\n o.weightSpecs = e, o.weightData = t10;\n }\n return r.signature != null && (o.signature = r.signature), r.userDefinedMetadata != null && (o.userDefinedMetadata = r.userDefinedMetadata), r.modelInitializer != null && (o.modelInitializer = r.modelInitializer), r.initializerSignature != null && (o.initializerSignature = r.initializerSignature), o;\n}\nasync function Op(r, e) {\n let t10, o;\n return r.weightsManifest != null && ([t10, o] = await e(r.weightsManifest)), Qb(r, t10, o);\n}\nfunction Ms(r) {\n if (r.modelTopology instanceof ArrayBuffer)\n throw new Error(\"Expected JSON model topology, received ArrayBuffer.\");\n return { dateSaved: /* @__PURE__ */ new Date(), modelTopologyType: \"JSON\", modelTopologyBytes: r.modelTopology == null ? 0 : I0(JSON.stringify(r.modelTopology)), weightSpecsBytes: r.weightSpecs == null ? 0 : I0(JSON.stringify(r.weightSpecs)), weightDataBytes: r.weightData == null ? 0 : r.weightData.byteLength };\n}\nfunction zm(r) {\n let e = [];\n for (let t10 of r)\n e.push(...t10.weights);\n return e;\n}\nfunction Dz() {\n let r = (t10) => {\n let o = t10 << 13, n = 0;\n for (; !(o & 8388608); )\n n -= 8388608, o <<= 1;\n return o &= -8388609, n += 947912704, o | n;\n }, e = new Uint32Array(2048);\n e[0] = 0;\n for (let t10 = 1; t10 < 1024; t10++)\n e[t10] = r(t10);\n for (let t10 = 1024; t10 < 2048; t10++)\n e[t10] = 939524096 + (t10 - 1024 << 13);\n return e;\n}\nfunction Fz() {\n let r = new Uint32Array(64);\n r[0] = 0, r[31] = 1199570944, r[32] = 2147483648, r[63] = 3347054592;\n for (let e = 1; e < 31; e++)\n r[e] = e << 23;\n for (let e = 33; e < 63; e++)\n r[e] = 2147483648 + (e - 32 << 23);\n return r;\n}\nfunction Oz() {\n let r = new Uint32Array(64);\n for (let e = 0; e < 64; e++)\n r[e] = 1024;\n return r[0] = r[32] = 0, r;\n}\nfunction Pz() {\n let r = Dz(), e = Fz(), t10 = Oz();\n return (o) => {\n let n = new ArrayBuffer(4 * o.length), s = new Uint32Array(n);\n for (let a = 0; a < o.length; a++) {\n let i = o[a], p = r[t10[i >> 10] + (i & 1023)] + e[i >> 10];\n s[a] = p;\n }\n return new Float32Array(n);\n };\n}\nvar mt = class {\n constructor() {\n this.saveRouters = [], this.loadRouters = [];\n }\n static getInstance() {\n return mt.instance == null && (mt.instance = new mt()), mt.instance;\n }\n static registerSaveRouter(e) {\n mt.getInstance().saveRouters.push(e);\n }\n static registerLoadRouter(e) {\n mt.getInstance().loadRouters.push(e);\n }\n static getSaveHandlers(e) {\n return mt.getHandlers(e, \"save\");\n }\n static getLoadHandlers(e, t10) {\n return mt.getHandlers(e, \"load\", t10);\n }\n static getHandlers(e, t10, o) {\n let n = [];\n return (t10 === \"load\" ? mt.getInstance().loadRouters : mt.getInstance().saveRouters).forEach((a) => {\n let i = a(e, o);\n i !== null && n.push(i);\n }), n;\n }\n};\nvar T0 = (r) => mt.registerSaveRouter(r);\nvar _0 = (r) => mt.registerLoadRouter(r);\nvar $0 = (r) => mt.getSaveHandlers(r);\nvar E0 = (r, e) => mt.getLoadHandlers(r, e);\nvar Zb = \"tensorflowjs\";\nvar Jb = 1;\nvar nu = \"models_store\";\nvar Ni = \"model_info_store\";\nfunction A0() {\n if (!O().getBool(\"IS_BROWSER\"))\n throw new Error(\"Failed to obtain IndexedDB factory because the current environmentis not a web browser.\");\n let r = typeof window == \"undefined\" ? self : window, e = r.indexedDB || r.mozIndexedDB || r.webkitIndexedDB || r.msIndexedDB || r.shimIndexedDB;\n if (e == null)\n throw new Error(\"The current browser does not appear to support IndexedDB.\");\n return e;\n}\nfunction eC(r) {\n let e = r.result;\n e.createObjectStore(nu, { keyPath: \"modelPath\" }), e.createObjectStore(Ni, { keyPath: \"modelPath\" });\n}\nvar Ls = class {\n constructor(e) {\n if (this.indexedDB = A0(), e == null || !e)\n throw new Error(\"For IndexedDB, modelPath must not be null, undefined or empty.\");\n this.modelPath = e;\n }\n async save(e) {\n if (e.modelTopology instanceof ArrayBuffer)\n throw new Error(\"BrowserLocalStorage.save() does not support saving model topology in binary formats yet.\");\n return this.databaseAction(this.modelPath, e);\n }\n async load() {\n return this.databaseAction(this.modelPath);\n }\n databaseAction(e, t10) {\n return new Promise((o, n) => {\n let s = this.indexedDB.open(Zb, Jb);\n s.onupgradeneeded = () => eC(s), s.onsuccess = () => {\n let a = s.result;\n if (t10 == null) {\n let i = a.transaction(nu, \"readonly\"), u = i.objectStore(nu).get(this.modelPath);\n u.onsuccess = () => {\n if (u.result == null)\n return a.close(), n(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));\n o(u.result.modelArtifacts);\n }, u.onerror = (c) => (a.close(), n(u.error)), i.oncomplete = () => a.close();\n } else {\n let i = Ms(t10), p = a.transaction(Ni, \"readwrite\"), u = p.objectStore(Ni), c = u.put({ modelPath: this.modelPath, modelArtifactsInfo: i }), l;\n c.onsuccess = () => {\n l = a.transaction(nu, \"readwrite\");\n let d = l.objectStore(nu).put({ modelPath: this.modelPath, modelArtifacts: t10, modelArtifactsInfo: i });\n d.onsuccess = () => o({ modelArtifactsInfo: i }), d.onerror = (f) => {\n u = p.objectStore(Ni);\n let h = u.delete(this.modelPath);\n h.onsuccess = () => (a.close(), n(d.error)), h.onerror = (g) => (a.close(), n(d.error));\n };\n }, c.onerror = (m) => (a.close(), n(c.error)), p.oncomplete = () => {\n l == null ? a.close() : l.oncomplete = () => a.close();\n };\n }\n }, s.onerror = (a) => n(s.error);\n });\n }\n};\nLs.URL_SCHEME = \"indexeddb://\";\nvar R0 = (r) => O().getBool(\"IS_BROWSER\") && !Array.isArray(r) && r.startsWith(Ls.URL_SCHEME) ? Mz(r.slice(Ls.URL_SCHEME.length)) : null;\nmt.registerSaveRouter(R0);\nmt.registerLoadRouter(R0);\nfunction Mz(r) {\n return new Ls(r);\n}\nfunction Lz(r) {\n return r.startsWith(Ls.URL_SCHEME) ? r.slice(Ls.URL_SCHEME.length) : r;\n}\nvar Wm = class {\n constructor() {\n this.indexedDB = A0();\n }\n async listModels() {\n return new Promise((e, t10) => {\n let o = this.indexedDB.open(Zb, Jb);\n o.onupgradeneeded = () => eC(o), o.onsuccess = () => {\n let n = o.result, s = n.transaction(Ni, \"readonly\"), i = s.objectStore(Ni).getAll();\n i.onsuccess = () => {\n let p = {};\n for (let u of i.result)\n p[u.modelPath] = u.modelArtifactsInfo;\n e(p);\n }, i.onerror = (p) => (n.close(), t10(i.error)), s.oncomplete = () => n.close();\n }, o.onerror = (n) => t10(o.error);\n });\n }\n async removeModel(e) {\n return e = Lz(e), new Promise((t10, o) => {\n let n = this.indexedDB.open(Zb, Jb);\n n.onupgradeneeded = () => eC(n), n.onsuccess = () => {\n let s = n.result, a = s.transaction(Ni, \"readwrite\"), i = a.objectStore(Ni), p = i.get(e), u;\n p.onsuccess = () => {\n if (p.result == null)\n return s.close(), o(new Error(`Cannot find model with path '${e}' in IndexedDB.`));\n {\n let c = i.delete(e), l = () => {\n u = s.transaction(nu, \"readwrite\");\n let d = u.objectStore(nu).delete(e);\n d.onsuccess = () => t10(p.result.modelArtifactsInfo), d.onerror = (f) => o(p.error);\n };\n c.onsuccess = l, c.onerror = (m) => (l(), s.close(), o(p.error));\n }\n }, p.onerror = (c) => (s.close(), o(p.error)), a.oncomplete = () => {\n u == null ? s.close() : u.oncomplete = () => s.close();\n };\n }, n.onerror = (s) => o(n.error);\n });\n }\n};\nvar $a = \"/\";\nvar Pp = \"tensorflowjs_models\";\nvar D0 = \"info\";\nvar Bz = \"model_topology\";\nvar Vz = \"weight_specs\";\nvar zz = \"weight_data\";\nvar Wz = \"model_metadata\";\nfunction F0(r) {\n return { info: [Pp, r, D0].join($a), topology: [Pp, r, Bz].join($a), weightSpecs: [Pp, r, Vz].join($a), weightData: [Pp, r, zz].join($a), modelMetadata: [Pp, r, Wz].join($a) };\n}\nfunction O0(r) {\n for (let e of Object.values(r))\n window.localStorage.removeItem(e);\n}\nfunction Uz(r) {\n let e = r.split($a);\n if (e.length < 3)\n throw new Error(`Invalid key format: ${r}`);\n return e.slice(1, e.length - 1).join($a);\n}\nfunction Gz(r) {\n return r.startsWith(Bs.URL_SCHEME) ? r.slice(Bs.URL_SCHEME.length) : r;\n}\nvar Bs = class {\n constructor(e) {\n if (!O().getBool(\"IS_BROWSER\") || typeof window == \"undefined\" || typeof window.localStorage == \"undefined\")\n throw new Error(\"The current environment does not support local storage.\");\n if (this.LS = window.localStorage, e == null || !e)\n throw new Error(\"For local storage, modelPath must not be null, undefined or empty.\");\n this.modelPath = e, this.keys = F0(this.modelPath);\n }\n async save(e) {\n if (e.modelTopology instanceof ArrayBuffer)\n throw new Error(\"BrowserLocalStorage.save() does not support saving model topology in binary formats yet.\");\n {\n let t10 = JSON.stringify(e.modelTopology), o = JSON.stringify(e.weightSpecs), n = Ms(e);\n try {\n this.LS.setItem(this.keys.info, JSON.stringify(n)), this.LS.setItem(this.keys.topology, t10), this.LS.setItem(this.keys.weightSpecs, o), this.LS.setItem(this.keys.weightData, k0(e.weightData));\n let s = { format: e.format, generatedBy: e.generatedBy, convertedBy: e.convertedBy, signature: e.signature != null ? e.signature : void 0, userDefinedMetadata: e.userDefinedMetadata != null ? e.userDefinedMetadata : void 0, modelInitializer: e.modelInitializer != null ? e.modelInitializer : void 0, initializerSignature: e.initializerSignature != null ? e.initializerSignature : void 0, trainingConfig: e.trainingConfig != null ? e.trainingConfig : void 0 };\n return this.LS.setItem(this.keys.modelMetadata, JSON.stringify(s)), { modelArtifactsInfo: n };\n } catch (s) {\n throw O0(this.keys), new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${n.modelTopologyBytes}, weightSpecsBytes=${n.weightSpecsBytes}, weightDataBytes=${n.weightDataBytes}.`);\n }\n }\n }\n async load() {\n let e = JSON.parse(this.LS.getItem(this.keys.info));\n if (e == null)\n throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);\n if (e.modelTopologyType !== \"JSON\")\n throw new Error(\"BrowserLocalStorage does not support loading non-JSON model topology yet.\");\n let t10 = {}, o = JSON.parse(this.LS.getItem(this.keys.topology));\n if (o == null)\n throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);\n t10.modelTopology = o;\n let n = JSON.parse(this.LS.getItem(this.keys.weightSpecs));\n if (n == null)\n throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);\n t10.weightSpecs = n;\n let s = this.LS.getItem(this.keys.modelMetadata);\n if (s != null) {\n let i = JSON.parse(s);\n t10.format = i.format, t10.generatedBy = i.generatedBy, t10.convertedBy = i.convertedBy, i.signature != null && (t10.signature = i.signature), i.userDefinedMetadata != null && (t10.userDefinedMetadata = i.userDefinedMetadata), i.modelInitializer != null && (t10.modelInitializer = i.modelInitializer), i.initializerSignature != null && (t10.initializerSignature = i.initializerSignature), i.trainingConfig != null && (t10.trainingConfig = i.trainingConfig);\n }\n let a = this.LS.getItem(this.keys.weightData);\n if (a == null)\n throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);\n return t10.weightData = N0(a), t10;\n }\n};\nBs.URL_SCHEME = \"localstorage://\";\nvar P0 = (r) => O().getBool(\"IS_BROWSER\") && !Array.isArray(r) && r.startsWith(Bs.URL_SCHEME) ? Hz(r.slice(Bs.URL_SCHEME.length)) : null;\nmt.registerSaveRouter(P0);\nmt.registerLoadRouter(P0);\nfunction Hz(r) {\n return new Bs(r);\n}\nvar Um = class {\n constructor() {\n $(O().getBool(\"IS_BROWSER\"), () => \"Current environment is not a web browser\"), $(typeof window == \"undefined\" || typeof window.localStorage != \"undefined\", () => \"Current browser does not appear to support localStorage\"), this.LS = window.localStorage;\n }\n async listModels() {\n let e = {}, t10 = Pp + $a, o = $a + D0;\n for (let n = 0; n < this.LS.length; ++n) {\n let s = this.LS.key(n);\n if (s.startsWith(t10) && s.endsWith(o)) {\n let a = Uz(s);\n e[a] = JSON.parse(this.LS.getItem(s));\n }\n }\n return e;\n }\n async removeModel(e) {\n e = Gz(e);\n let t10 = F0(e);\n if (this.LS.getItem(t10.info) == null)\n throw new Error(`Cannot find model at path '${e}'`);\n let o = JSON.parse(this.LS.getItem(t10.info));\n return O0(t10), o;\n }\n};\nvar Mp = \"://\";\nvar Xt = class {\n constructor() {\n this.managers = {};\n }\n static getInstance() {\n return Xt.instance == null && (Xt.instance = new Xt()), Xt.instance;\n }\n static registerManager(e, t10) {\n $(e != null, () => \"scheme must not be undefined or null.\"), e.endsWith(Mp) && (e = e.slice(0, e.indexOf(Mp))), $(e.length > 0, () => \"scheme must not be an empty string.\");\n let o = Xt.getInstance();\n $(o.managers[e] == null, () => `A model store manager is already registered for scheme '${e}'.`), o.managers[e] = t10;\n }\n static getManager(e) {\n let t10 = Xt.getInstance().managers[e];\n if (t10 == null)\n throw new Error(`Cannot find model manager for scheme '${e}'`);\n return t10;\n }\n static getSchemes() {\n return Object.keys(Xt.getInstance().managers);\n }\n};\nfunction Gm(r) {\n if (r.indexOf(Mp) === -1)\n throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${Xt.getSchemes().join(\",\")}`);\n return { scheme: r.split(Mp)[0], path: r.split(Mp)[1] };\n}\nasync function M0(r, e, t10 = false) {\n $(r !== e, () => `Old path and new path are the same: '${r}'`);\n let o = mt.getLoadHandlers(r);\n $(o.length > 0, () => `Copying failed because no load handler is found for source URL ${r}.`), $(o.length < 2, () => `Copying failed because more than one (${o.length}) load handlers for source URL ${r}.`);\n let n = o[0], s = mt.getSaveHandlers(e);\n $(s.length > 0, () => `Copying failed because no save handler is found for destination URL ${e}.`), $(s.length < 2, () => `Copying failed because more than one (${o.length}) save handlers for destination URL ${e}.`);\n let a = s[0], i = Gm(r).scheme, p = Gm(r).path, u = i === Gm(r).scheme, c = await n.load();\n t10 && u && await Xt.getManager(i).removeModel(p);\n let l = await a.save(c);\n return t10 && !u && await Xt.getManager(i).removeModel(p), l.modelArtifactsInfo;\n}\nasync function L0() {\n let r = Xt.getSchemes(), e = {};\n for (let t10 of r) {\n let o = await Xt.getManager(t10).listModels();\n for (let n in o) {\n let s = t10 + Mp + n;\n e[s] = o[n];\n }\n }\n return e;\n}\nasync function B0(r) {\n let e = Gm(r);\n return Xt.getManager(e.scheme).removeModel(e.path);\n}\nasync function V0(r, e) {\n return M0(r, e, false);\n}\nasync function z0(r, e) {\n return M0(r, e, true);\n}\nvar tC = class {\n constructor() {\n this.messageName = \"setTimeoutCustom\", this.functionRefs = [], this.handledMessageCount = 0, this.hasEventListener = false;\n }\n fetch(e, t10) {\n return fetch(e, t10);\n }\n now() {\n return performance.now();\n }\n encode(e, t10) {\n if (t10 !== \"utf-8\" && t10 !== \"utf8\")\n throw new Error(`Browser's encoder only supports utf-8, but got ${t10}`);\n return this.textEncoder == null && (this.textEncoder = new TextEncoder()), this.textEncoder.encode(e);\n }\n decode(e, t10) {\n return new TextDecoder(t10).decode(e);\n }\n setTimeoutCustom(e, t10) {\n if (typeof window == \"undefined\" || !O().getBool(\"USE_SETTIMEOUTCUSTOM\")) {\n setTimeout(e, t10);\n return;\n }\n this.functionRefs.push(e), setTimeout(() => {\n window.postMessage({ name: this.messageName, index: this.functionRefs.length - 1 }, \"*\");\n }, t10), this.hasEventListener || (this.hasEventListener = true, window.addEventListener(\"message\", (o) => {\n if (o.source === window && o.data.name === this.messageName) {\n o.stopPropagation();\n let n = this.functionRefs[o.data.index];\n n(), this.handledMessageCount++, this.handledMessageCount === this.functionRefs.length && (this.functionRefs = [], this.handledMessageCount = 0);\n }\n }, true));\n }\n isTypedArray(e) {\n return e instanceof Float32Array || e instanceof Int32Array || e instanceof Uint8Array || e instanceof Uint8ClampedArray;\n }\n};\nif (O().get(\"IS_BROWSER\")) {\n O().setPlatform(\"browser\", new tC());\n try {\n Xt.registerManager(Bs.URL_SCHEME, new Um());\n } catch (r) {\n }\n try {\n Xt.registerManager(Ls.URL_SCHEME, new Wm());\n } catch (r) {\n }\n}\nvar Kz = { importFetch: () => W0() };\nvar rC;\nvar oC = class {\n constructor() {\n this.util = U0(), this.textEncoder = new this.util.TextEncoder();\n }\n fetch(e, t10) {\n return O().global.fetch != null ? O().global.fetch(e, t10) : (rC == null && (rC = Kz.importFetch()), rC(e, t10));\n }\n now() {\n let e = process.hrtime();\n return e[0] * 1e3 + e[1] / 1e6;\n }\n encode(e, t10) {\n if (t10 !== \"utf-8\" && t10 !== \"utf8\")\n throw new Error(`Node built-in encoder only supports utf-8, but got ${t10}`);\n return this.textEncoder.encode(e);\n }\n decode(e, t10) {\n return e.length === 0 ? \"\" : new this.util.TextDecoder(t10).decode(e);\n }\n isTypedArray(e) {\n return this.util.types.isFloat32Array(e) || this.util.types.isInt32Array(e) || this.util.types.isUint8Array(e) || this.util.types.isUint8ClampedArray(e);\n }\n};\nO().get(\"IS_NODE\") && !O().get(\"IS_BROWSER\") && O().setPlatform(\"node\", new oC());\nfunction le(r, e = \"float32\", t10) {\n return e = e || \"float32\", bt(r), new st(r, e, t10);\n}\nfunction qz(r, e) {\n let t10 = v(r, \"x\", \"cast\");\n if (!Ib(e))\n throw new Error(`Failed to cast to unknown dtype ${e}`);\n if (e === \"string\" && t10.dtype !== \"string\" || e !== \"string\" && t10.dtype === \"string\")\n throw new Error(\"Only strings can be casted to strings\");\n let o = { x: t10 }, n = { dtype: e };\n return T.runKernel(co, o, n);\n}\nvar je = N({ cast_: qz });\nfunction jz(r) {\n let t10 = { x: v(r, \"x\", \"clone\", \"string_or_numeric\") };\n return T.runKernel(mo, t10);\n}\nvar Lr = N({ clone_: jz });\nfunction Hm(r, e = false) {\n console.log(r.toString(e));\n}\nHb();\nvar Xz = { buffer: le, cast: je, clone: Lr, print: Hm };\nx0(Xz);\nfunction Iie() {\n O().set(\"PROD\", true);\n}\nfunction vie() {\n O().set(\"DEBUG\", true);\n}\nfunction kie() {\n O().set(\"DEPRECATION_WARNINGS_ENABLED\", false), console.warn(\"TensorFlow.js deprecation warnings have been disabled.\");\n}\nfunction nC(r) {\n O().getBool(\"DEPRECATION_WARNINGS_ENABLED\") && console.warn(r + \" You can disable deprecation warnings with tf.disableDeprecationWarnings().\");\n}\ny0(nC);\nfunction Nie() {\n T.disposeVariables();\n}\nfunction sr() {\n return T;\n}\nfunction Tie() {\n return T.memory();\n}\nfunction _ie(r) {\n return T.profile(r);\n}\nfunction Ee(r, e) {\n return T.tidy(r, e);\n}\nfunction Ot(r) {\n Qc(r).forEach((t10) => t10.dispose());\n}\nfunction _r(r) {\n return T.keep(r);\n}\nfunction $ie(r) {\n return T.time(r);\n}\nfunction Eie(r) {\n return T.setBackend(r);\n}\nfunction Aie() {\n return T.ready();\n}\nfunction Rie() {\n return T.backendName;\n}\nfunction Die(r) {\n T.removeBackend(r);\n}\nfunction Fie(r) {\n return T.findBackend(r);\n}\nfunction Oie(r) {\n return T.findBackendFactory(r);\n}\nfunction Ti(r, e, t10 = 1) {\n return T.registerBackend(r, e, t10);\n}\nfunction Pie() {\n return T.backend;\n}\nfunction Mie(r, e) {\n O().setPlatform(r, e);\n}\nfunction Yz(r, e) {\n let t10 = v(r, \"a\", \"add\"), o = v(e, \"b\", \"add\");\n [t10, o] = De(t10, o);\n let n = { a: t10, b: o };\n return T.runKernel(eo, n);\n}\nvar be = N({ add_: Yz });\nfunction Qz(r, e) {\n let t10 = v(r, \"a\", \"floorDiv\"), o = v(e, \"b\", \"floorDiv\");\n [t10, o] = De(t10, o);\n let n = { a: t10, b: o };\n return T.runKernel(nn, n);\n}\nvar Km = N({ floorDiv_: Qz });\nfunction Zz(r, e) {\n let t10 = v(r, \"a\", \"div\"), o = v(e, \"b\", \"div\");\n if ([t10, o] = De(t10, o), t10.dtype === \"int32\" && o.dtype === \"int32\")\n return Km(t10, o);\n let n = { a: t10, b: o }, s = {};\n return T.runKernel(Zo, n, s);\n}\nvar He = N({ div_: Zz });\nfunction Jz(r, e) {\n let t10 = v(r, \"a\", \"mul\"), o = v(e, \"b\", \"mul\");\n [t10, o] = De(t10, o);\n let n = { a: t10, b: o };\n return T.runKernel(kn, n);\n}\nvar ne = N({ mul_: Jz });\nfunction eW(r) {\n let e = v(r, \"x\", \"abs\");\n if (e.dtype === \"complex64\") {\n let t10 = { x: e };\n return T.runKernel(hp, t10);\n } else {\n let t10 = { x: e };\n return T.runKernel(ys, t10);\n }\n}\nvar Yt = N({ abs_: eW });\nfunction tW(r) {\n let t10 = { x: v(r, \"x\", \"acos\") };\n return T.runKernel(aa, t10);\n}\nvar G0 = N({ acos_: tW });\nfunction rW(r) {\n let t10 = { x: v(r, \"x\", \"acosh\") };\n return T.runKernel(ia, t10);\n}\nvar H0 = N({ acosh_: rW });\nfunction oW(r) {\n $(Array.isArray(r), () => \"The argument passed to tf.addN() must be a list of tensors\"), $(r.length >= 1, () => `Must pass at least one tensor to tf.addN(), but got ${r.length}`);\n let e = r.map((n, s) => v(n, `tensors${s}`, \"addN\")), t10 = e[0];\n e.forEach((n) => {\n if (n.dtype !== t10.dtype)\n throw new Error(\"All tensors passed to tf.addN() must have the same dtype\");\n }), e.forEach((n) => {\n if (!Or(n.shape, t10.shape))\n throw new Error(\"All tensors passed to tf.addN() must have the same shape\");\n });\n let o = e;\n return T.runKernel(Po, o);\n}\nvar K0 = N({ addN_: oW });\nfunction nW(r, e = null, t10 = false) {\n let n = { x: v(r, \"x\", \"all\", \"bool\") }, s = { axis: e, keepDims: t10 };\n return T.runKernel(Mo, n, s);\n}\nvar q0 = N({ all_: nW });\nfunction sW(r, e = null, t10 = false) {\n let n = { x: v(r, \"x\", \"any\", \"bool\") }, s = { axis: e, keepDims: t10 };\n return T.runKernel(Lo, n, s);\n}\nvar j0 = N({ any_: sW });\nfunction aW(r, e = 0) {\n let o = { x: v(r, \"x\", \"argMax\") }, n = { axis: e };\n return T.runKernel(Bo, o, n);\n}\nvar X0 = N({ argMax_: aW });\nfunction iW(r, e = 0) {\n let o = { x: v(r, \"x\", \"argMin\") }, n = { axis: e };\n return T.runKernel(ei, o, n);\n}\nvar Y0 = N({ argMin_: iW });\nfunction uW(r) {\n let t10 = { x: v(r, \"x\", \"asin\") };\n return T.runKernel(ua, t10);\n}\nvar Q0 = N({ asin_: uW });\nfunction pW(r) {\n let t10 = { x: v(r, \"x\", \"asinh\") };\n return T.runKernel(pa, t10);\n}\nvar Z0 = N({ asinh_: pW });\nfunction cW(r) {\n let t10 = { x: v(r, \"x\", \"atan\") };\n return T.runKernel(ca, t10);\n}\nvar J0 = N({ atan_: cW });\nfunction lW(r, e) {\n let t10 = v(r, \"a\", \"atan2\"), o = v(e, \"b\", \"atan2\");\n [t10, o] = De(t10, o);\n let n = { a: t10, b: o };\n return T.runKernel(ma, n);\n}\nvar ev = N({ atan2_: lW });\nfunction mW(r) {\n let t10 = { x: v(r, \"x\", \"atanh\") };\n return T.runKernel(la, t10);\n}\nvar tv = N({ atanh_: mW });\nfunction dW(r, e, t10, o, n = \"NHWC\", s) {\n let a = r[3], i = [...e, a], p = ov(n);\n return au(r, i, t10, s, o, null, null, p);\n}\nfunction aC(r, e, t10, o, n, s, a = \"channelsLast\") {\n let [i, p] = Jc(e), u;\n if (a === \"channelsLast\")\n u = [i, p, r[3], r[3]];\n else if (a === \"channelsFirst\")\n u = [i, p, r[1], r[1]];\n else\n throw new Error(`Unknown dataFormat ${a}`);\n return au(r, u, t10, o, n, s, false, a);\n}\nfunction fW(r, e, t10, o, n, s, a = \"NDHWC\") {\n let [i, p, u] = sC(e), c, l;\n if (a === \"NDHWC\")\n l = \"channelsLast\", c = [i, p, u, r[4], r[4]];\n else if (a === \"NCDHW\")\n l = \"channelsFirst\", c = [i, p, u, r[1], r[1]];\n else\n throw new Error(`Unknown dataFormat ${a}`);\n return rv(r, c, t10, o, n, false, l, s);\n}\nfunction au(r, e, t10, o, n, s, a = false, i = \"channelsLast\") {\n let [p, u, c, l] = [-1, -1, -1, -1];\n if (i === \"channelsLast\")\n [p, u, c, l] = r;\n else if (i === \"channelsFirst\")\n [p, l, u, c] = r;\n else\n throw new Error(`Unknown dataFormat ${i}`);\n let [m, d, , f] = e, [h, g] = Jc(t10), [x, b] = Jc(o), C = Lp(m, x), w = Lp(d, b), { padInfo: k, outHeight: _, outWidth: E } = xW(n, u, c, h, g, C, w, s, i), A = a ? f * l : f, R;\n return i === \"channelsFirst\" ? R = [p, A, _, E] : i === \"channelsLast\" && (R = [p, _, E, A]), { batchSize: p, dataFormat: i, inHeight: u, inWidth: c, inChannels: l, outHeight: _, outWidth: E, outChannels: A, padInfo: k, strideHeight: h, strideWidth: g, filterHeight: m, filterWidth: d, effectiveFilterHeight: C, effectiveFilterWidth: w, dilationHeight: x, dilationWidth: b, inShape: r, outShape: R, filterShape: e };\n}\nfunction rv(r, e, t10, o, n, s = false, a = \"channelsLast\", i) {\n let [p, u, c, l, m] = [-1, -1, -1, -1, -1];\n if (a === \"channelsLast\")\n [p, u, c, l, m] = r;\n else if (a === \"channelsFirst\")\n [p, m, u, c, l] = r;\n else\n throw new Error(`Unknown dataFormat ${a}`);\n let [d, f, h, , g] = e, [x, b, C] = sC(t10), [w, k, _] = sC(o), E = Lp(d, w), A = Lp(f, k), R = Lp(h, _), { padInfo: D, outDepth: P, outHeight: M, outWidth: L } = yW(n, u, c, l, x, b, C, E, A, R, i), V = s ? g * m : g, z;\n return a === \"channelsFirst\" ? z = [p, V, P, M, L] : a === \"channelsLast\" && (z = [p, P, M, L, V]), { batchSize: p, dataFormat: a, inDepth: u, inHeight: c, inWidth: l, inChannels: m, outDepth: P, outHeight: M, outWidth: L, outChannels: V, padInfo: D, strideDepth: x, strideHeight: b, strideWidth: C, filterDepth: d, filterHeight: f, filterWidth: h, effectiveFilterDepth: E, effectiveFilterHeight: A, effectiveFilterWidth: R, dilationDepth: w, dilationHeight: k, dilationWidth: _, inShape: r, outShape: z, filterShape: e };\n}\nfunction hW(r, e, t10, o, n) {\n o == null && (o = iC(r, e, t10));\n let s = r[0], a = r[1], i = el((s - e + 2 * o) / t10 + 1, n), p = el((a - e + 2 * o) / t10 + 1, n);\n return [i, p];\n}\nfunction gW(r, e, t10, o, n, s) {\n n == null && (n = iC(r, e[0], o[0]));\n let a = [0, 0, 0, t10];\n for (let i = 0; i < 3; i++)\n r[i] + 2 * n >= e[i] && (a[i] = el((r[i] - e[i] + 2 * n) / o[i] + 1, s));\n return a;\n}\nfunction iC(r, e, t10, o = 1) {\n let n = Lp(e, o);\n return Math.floor((r[0] * (t10 - 1) - t10 + n) / 2);\n}\nfunction Jc(r) {\n return typeof r == \"number\" ? [r, r, r] : r.length === 2 ? [r[0], r[1], 1] : r;\n}\nfunction sC(r) {\n return typeof r == \"number\" ? [r, r, r] : r;\n}\nfunction Lp(r, e) {\n return e <= 1 ? r : r + (r - 1) * (e - 1);\n}\nfunction xW(r, e, t10, o, n, s, a, i, p) {\n let u, c, l;\n if (typeof r == \"number\") {\n u = { top: r, bottom: r, left: r, right: r, type: r === 0 ? \"VALID\" : \"NUMBER\" };\n let d = hW([e, t10], s, o, r, i);\n c = d[0], l = d[1];\n } else if (r === \"same\") {\n c = Math.ceil(e / o), l = Math.ceil(t10 / n);\n let m = Math.max(0, (c - 1) * o + s - e), d = Math.max(0, (l - 1) * n + a - t10), f = Math.floor(m / 2), h = m - f, g = Math.floor(d / 2), x = d - g;\n u = { top: f, bottom: h, left: g, right: x, type: \"SAME\" };\n } else if (r === \"valid\")\n u = { top: 0, bottom: 0, left: 0, right: 0, type: \"VALID\" }, c = Math.ceil((e - s + 1) / o), l = Math.ceil((t10 - a + 1) / n);\n else if (typeof r == \"object\") {\n let m = p === \"channelsLast\" ? r[1][0] : r[2][0], d = p === \"channelsLast\" ? r[1][1] : r[2][1], f = p === \"channelsLast\" ? r[2][0] : r[3][0], h = p === \"channelsLast\" ? r[2][1] : r[3][1];\n u = { top: m, bottom: d, left: f, right: h, type: m === 0 && d === 0 && f === 0 && h === 0 ? \"VALID\" : \"EXPLICIT\" }, c = el((e - s + m + d) / o + 1, i), l = el((t10 - a + f + h) / n + 1, i);\n } else\n throw Error(`Unknown padding parameter: ${r}`);\n return { padInfo: u, outHeight: c, outWidth: l };\n}\nfunction yW(r, e, t10, o, n, s, a, i, p, u, c) {\n let l, m, d, f;\n if (r === \"valid\" && (r = 0), typeof r == \"number\") {\n l = { top: r, bottom: r, left: r, right: r, front: r, back: r, type: r === 0 ? \"VALID\" : \"NUMBER\" };\n let g = gW([e, t10, o, 1], [i, p, u], 1, [n, s, a], r, c);\n m = g[0], d = g[1], f = g[2];\n } else if (r === \"same\") {\n m = Math.ceil(e / n), d = Math.ceil(t10 / s), f = Math.ceil(o / a);\n let h = (m - 1) * n + i - e, g = (d - 1) * s + p - t10, x = (f - 1) * a + u - o, b = Math.floor(h / 2), C = h - b, w = Math.floor(g / 2), k = g - w, _ = Math.floor(x / 2), E = x - _;\n l = { top: w, bottom: k, left: _, right: E, front: b, back: C, type: \"SAME\" };\n } else\n throw Error(`Unknown padding parameter: ${r}`);\n return { padInfo: l, outDepth: m, outHeight: d, outWidth: f };\n}\nfunction el(r, e) {\n if (!e)\n return Math.trunc(r);\n switch (e) {\n case \"round\":\n return Math.round(r);\n case \"ceil\":\n return Math.ceil(r);\n case \"floor\":\n return Math.floor(r);\n default:\n throw new Error(`Unknown roundingMode ${e}`);\n }\n}\nfunction su(r) {\n let [e, t10, o] = Jc(r);\n return e === 1 && t10 === 1 && o === 1;\n}\nfunction mr(r, e) {\n return su(r) || su(e);\n}\nfunction Vs(r) {\n return Jc(r).every((e) => e > 0);\n}\nfunction ov(r) {\n if (r === \"NHWC\")\n return \"channelsLast\";\n if (r === \"NCHW\")\n return \"channelsFirst\";\n throw new Error(`Unknown dataFormat ${r}`);\n}\nfunction Mt(r, e, t10) {\n if (t10 != null) {\n if (typeof e == \"string\")\n throw Error(`Error in ${r}: pad must be an integer when using dimRoundingMode ${t10} but got pad ${e}.`);\n if (typeof e == \"number\")\n $(sa(e), () => `Error in ${r}: pad must be an integer when using dimRoundingMode ${t10} but got pad ${e}.`);\n else if (typeof e == \"object\")\n e.forEach((o) => {\n o.forEach((n) => {\n $(sa(n), () => `Error in ${r}: pad must be an integer when using dimRoundingMode ${t10} but got pad ${n}.`);\n });\n });\n else\n throw Error(`Error in ${r}: Unknown padding parameter: ${e}`);\n }\n}\nfunction bW(r, e) {\n let o = { x: v(r, \"x\", \"reshape\", \"string_or_numeric\") }, n = { shape: e };\n return T.runKernel(_s, o, n);\n}\nvar W = N({ reshape_: bW });\nfunction CW(r, e, t10, o, n) {\n let s = v(r, \"x\", \"avgPool\", \"float32\"), a = 1;\n $(mr(t10, a), () => `Error in avgPool: Either strides or dilations must be 1. Got strides ${t10} and dilations '${a}'`);\n let i = s, p = false;\n s.rank === 3 && (p = true, i = W(s, [1, s.shape[0], s.shape[1], s.shape[2]])), $(i.rank === 4, () => `Error in avgPool: x must be rank 4 but got rank ${i.rank}.`), Mt(\"avgPool\", o, n);\n let u = { x: i }, c = { filterSize: e, strides: t10, pad: o, dimRoundingMode: n }, l = T.runKernel(Vo, u, c);\n return l = je(l, s.dtype), p ? W(l, [l.shape[1], l.shape[2], l.shape[3]]) : l;\n}\nvar qm = N({ avgPool_: CW });\nfunction SW(r, e, t10, o, n, s = \"NDHWC\") {\n let a = v(r, \"x\", \"avgPool3d\", \"float32\"), i = a, p = false;\n a.rank === 4 && (p = true, i = W(a, [1, a.shape[0], a.shape[1], a.shape[2], a.shape[3]])), $(i.rank === 5, () => `Error in avgPool3d: x must be rank 5 but got rank ${i.rank}.`), $(s === \"NDHWC\", () => `Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`), $(typeof t10 == \"number\" && t10 > 0 || Array.isArray(t10) && t10[0] > 0 && t10[1] > 0 && t10[2] > 0, () => `Error in avgPool3d: Stride must be > 0, but got '${t10}'`), Mt(\"avgPool3d\", o, n);\n let u = { x: i }, c = { filterSize: e, strides: t10, pad: o, dimRoundingMode: n, dataFormat: s }, l = T.runKernel(dp, u, c);\n return l = je(l, i.dtype), p ? W(l, [l.shape[1], l.shape[2], l.shape[3], l.shape[4]]) : l;\n}\nvar nv = N({ avgPool3d_: SW });\nfunction wW(r, e = 0) {\n $(r.length >= 1, () => \"Pass at least one tensor to concat\");\n let t10 = _a(r, \"tensors\", \"concat\", \"string_or_numeric\");\n if (t10[0].dtype === \"complex64\" && t10.forEach((s) => {\n if (s.dtype !== \"complex64\")\n throw new Error(`Cannot concatenate complex64 tensors with a tensor\n with dtype ${s.dtype}. `);\n }), t10.length === 1)\n return Lr(t10[0]);\n let o = t10, n = { axis: e };\n return T.runKernel(Cs, o, n);\n}\nvar xt = N({ concat_: wW });\nfunction IW(r, e, t10 = false, o = false) {\n let n = v(r, \"a\", \"matMul\"), s = v(e, \"b\", \"matMul\");\n [n, s] = De(n, s);\n let a = { a: n, b: s }, i = { transposeA: t10, transposeB: o };\n return T.runKernel(zo, a, i);\n}\nvar Xe = N({ matMul_: IW });\nfunction vW(r) {\n let t10 = { x: v(r, \"x\", \"sigmoid\", \"float32\") };\n return T.runKernel(Gn, t10);\n}\nvar Ws = N({ sigmoid_: vW });\nfunction kW(r, e, t10) {\n let o = v(r, \"x\", \"slice\", \"string_or_numeric\");\n if (o.rank === 0)\n throw new Error(\"Slicing scalar is not possible\");\n let n = { x: o }, s = { begin: e, size: t10 };\n return T.runKernel(Es, n, s);\n}\nvar Ke = N({ slice_: kW });\nfunction NW(r) {\n let t10 = { x: v(r, \"x\", \"tanh\", \"float32\") };\n return T.runKernel(Zn, t10);\n}\nvar tl = N({ tanh_: NW });\nfunction TW(r, e, t10, o, n, s) {\n let a = v(r, \"forgetBias\", \"basicLSTMCell\"), i = v(e, \"lstmKernel\", \"basicLSTMCell\"), p = v(t10, \"lstmBias\", \"basicLSTMCell\"), u = v(o, \"data\", \"basicLSTMCell\"), c = v(n, \"c\", \"basicLSTMCell\"), l = v(s, \"h\", \"basicLSTMCell\"), m = xt([u, l], 1), d = Xe(m, i), f = be(d, p), h = f.shape[0], g = f.shape[1] / 4, x = [h, g], b = Ke(f, [0, 0], x), C = Ke(f, [0, g], x), w = Ke(f, [0, g * 2], x), k = Ke(f, [0, g * 3], x), _ = be(ne(Ws(b), tl(C)), ne(c, Ws(be(a, w)))), E = ne(tl(_), Ws(k));\n return [_, E];\n}\nvar sv = N({ basicLSTMCell_: TW });\nfunction _W(r, e, t10) {\n let o = v(r, \"x\", \"batchToSpaceND\"), n = e.reduce((i, p) => i * p);\n $(o.rank >= 1 + e.length, () => `input rank is ${o.rank} but should be > than blockShape.length ${e.length}`), $(t10.length === e.length, () => `crops.length is ${t10.length} but should be equal to blockShape.length ${e.length}`), $(o.shape[0] % n === 0, () => `input tensor batch is ${o.shape[0]} but is not divisible by the product of the elements of blockShape ${e.join(\" * \")} === ${n}`);\n let s = { x: o }, a = { blockShape: e, crops: t10 };\n return T.runKernel(bs, s, a);\n}\nvar jm = N({ batchToSpaceND_: _W });\nfunction av(r) {\n let e;\n return r.rank === 0 || r.rank === 1 ? e = W(r, [1, 1, 1, r.size]) : r.rank === 2 ? e = W(r, [1, 1, r.shape[0], r.shape[1]]) : r.rank === 3 ? e = W(r, [1, r.shape[0], r.shape[1], r.shape[2]]) : e = r, e;\n}\nfunction $W(r, e, t10, o, n, s) {\n s == null && (s = 1e-3);\n let a = v(r, \"x\", \"batchNorm\"), i = v(e, \"mean\", \"batchNorm\"), p = v(t10, \"variance\", \"batchNorm\"), u;\n n != null && (u = v(n, \"scale\", \"batchNorm\"));\n let c;\n o != null && (c = v(o, \"offset\", \"batchNorm\")), $(i.rank === p.rank, () => \"Batch normalization gradient requires mean and variance to have equal ranks.\"), $(c == null || i.rank === c.rank, () => \"Batch normalization gradient requires mean and offset to have equal ranks.\"), $(u == null || i.rank === u.rank, () => \"Batch normalization gradient requires mean and scale to have equal ranks.\");\n let m = { x: av(a), scale: u, offset: c, mean: i, variance: p }, d = { varianceEpsilon: s }, f = T.runKernel(sn, m, d);\n return W(f, a.shape);\n}\nvar _i = N({ batchNorm_: $W });\nfunction EW(r, e, t10, o, n, s) {\n let a = v(r, \"x\", \"batchNorm\"), i = v(e, \"mean\", \"batchNorm\"), p = v(t10, \"variance\", \"batchNorm\"), u;\n n != null && (u = v(n, \"scale\", \"batchNorm\"));\n let c;\n return o != null && (c = v(o, \"offset\", \"batchNorm\")), $(a.rank === 2, () => `Error in batchNorm2D: x must be rank 2 but got rank ${a.rank}.`), $(i.rank === 2 || i.rank === 1, () => `Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${i.rank}.`), $(p.rank === 2 || p.rank === 1, () => `Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${p.rank}.`), u != null && $(u.rank === 2 || u.rank === 1, () => `Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${u.rank}.`), c != null && $(c.rank === 2 || c.rank === 1, () => `Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${c.rank}.`), _i(a, i, p, c, u, s);\n}\nvar iv = N({ batchNorm2d_: EW });\nfunction AW(r, e, t10, o, n, s) {\n let a = v(r, \"x\", \"batchNorm\"), i = v(e, \"mean\", \"batchNorm\"), p = v(t10, \"variance\", \"batchNorm\"), u;\n n != null && (u = v(n, \"scale\", \"batchNorm\"));\n let c;\n return o != null && (c = v(o, \"offset\", \"batchNorm\")), $(a.rank === 3, () => `Error in batchNorm3D: x must be rank 3 but got rank ${a.rank}.`), $(i.rank === 3 || i.rank === 1, () => `Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${i.rank}.`), $(p.rank === 3 || p.rank === 1, () => `Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${p.rank}.`), u != null && $(u.rank === 3 || u.rank === 1, () => `Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${u.rank}.`), c != null && $(c.rank === 3 || c.rank === 1, () => `Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${c.rank}.`), _i(a, i, p, c, u, s);\n}\nvar uv = N({ batchNorm3d_: AW });\nfunction RW(r, e, t10, o, n, s) {\n let a = v(r, \"x\", \"batchNorm\"), i = v(e, \"mean\", \"batchNorm\"), p = v(t10, \"variance\", \"batchNorm\"), u;\n n != null && (u = v(n, \"scale\", \"batchNorm\"));\n let c;\n return o != null && (c = v(o, \"offset\", \"batchNorm\")), $(a.rank === 4, () => `Error in batchNorm4D: x must be rank 4 but got rank ${a.rank}.`), $(i.rank === 4 || i.rank === 1, () => `Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${i.rank}.`), $(p.rank === 4 || p.rank === 1, () => `Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${p.rank}.`), u != null && $(u.rank === 4 || u.rank === 1, () => `Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${u.rank}.`), c != null && $(c.rank === 4 || c.rank === 1, () => `Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${c.rank}.`), _i(a, i, p, c, u, s);\n}\nvar pv = N({ batchNorm4d_: RW });\nfunction DW(r, e, t10) {\n let o = v(r, \"x\", \"bincount\"), n = v(e, \"weights\", \"bincount\");\n $(o.dtype === \"int32\", () => `Error in bincount: input dtype must be int32, but got ${o.dtype}`), $(t10 >= 0, () => `size must be non-negative, but got ${t10}.`), $(n.size === o.size || n.size === 0, () => `Error in bincount: weights must have the same size as input or0-length, but got input shape: ${o.shape}, weights shape: ${n.shape}.`);\n let s = { x: o, weights: n }, a = { size: t10 };\n return T.runKernel(ti, s, a);\n}\nvar Xm = N({ bincount_: DW });\nfunction FW(r, e) {\n let t10 = v(r, \"s0\", \"broadcastArgs\", \"int32\"), o = v(e, \"s1\", \"broadcastArgs\", \"int32\");\n if (t10.rank !== 1)\n throw new Error(`broadcastArgs(): first input must be a vector (rank=1). Has rank ${t10.rank}`);\n if (o.rank !== 1)\n throw new Error(`broadcastArgs(): second input must be a vector (rank=1). Has rank ${o.rank}`);\n let n = { s0: t10, s1: o };\n return T.runKernel(fp, n);\n}\nvar cv = N({ broadcastArgs_: FW });\nfunction OW(r, e) {\n let t10 = v(r, \"broadcastTo\", \"x\"), o = t10.shape;\n if (bt(e), e.length < t10.rank)\n throw new Error(`broadcastTo(): shape.length=${e.length} < input.rank=${t10.rank}.`);\n if (e.length > t10.rank) {\n let u = t10.shape.slice();\n for (; u.length < e.length; )\n u.unshift(1);\n t10 = W(t10, u);\n }\n let n = t10.shape, s = Array.from(e);\n for (let u = e.length - 1; u >= 0; u--)\n if (n[u] === e[u])\n s[u] = 1;\n else if (t10.shape[u] !== 1)\n throw new Error(`broadcastTo(): [${o}] cannot be broadcast to [${e}].`);\n if (s.map((u, c) => u > 1 ? c : -1).filter((u) => u >= 0).length === 0)\n return Lr(t10);\n let i = { x: t10 }, p = { reps: s };\n return T.runKernel(to, i, p);\n}\nvar $i = N({ broadcastTo_: OW });\nfunction PW(r) {\n let t10 = { x: v(r, \"x\", \"ceil\", \"float32\") };\n return T.runKernel(Wo, t10);\n}\nvar lv = N({ ceil_: PW });\nfunction Us(r, e, t10) {\n bt(r);\n let o = { shape: r, value: e, dtype: t10 };\n return T.runKernel(ws, {}, o);\n}\nfunction MW(r, e, t10) {\n let o = v(r, \"x\", \"clipByValue\");\n if ($(e <= t10, () => `Error in clip: min (${e}) must be less than or equal to max (${t10}).`), e === t10)\n return Us(o.shape, e, o.dtype);\n let n = { x: o }, s = { clipValueMin: e, clipValueMax: t10 };\n return T.runKernel(lo, n, s);\n}\nvar mv = N({ clipByValue_: MW });\nfunction LW(r) {\n return xt(r, 0);\n}\nvar dv = N({ concat1d_: LW });\nfunction BW(r, e) {\n return xt(r, e);\n}\nvar fv = N({ concat2d_: BW });\nfunction VW(r, e) {\n return xt(r, e);\n}\nvar hv = N({ concat3d_: VW });\nfunction zW(r, e) {\n return xt(r, e);\n}\nvar gv = N({ concat4d_: zW });\nfunction WW(r, e, t10, o, n = \"NHWC\", s = [1, 1], a) {\n let i = v(r, \"x\", \"conv2d\", \"float32\"), p = v(e, \"filter\", \"conv2d\", \"float32\"), u = i, c = false;\n i.rank === 3 && (c = true, u = W(i, [1, i.shape[0], i.shape[1], i.shape[2]])), $(u.rank === 4, () => `Error in conv2d: input must be rank 4, but got rank ${u.rank}.`), $(p.rank === 4, () => `Error in conv2d: filter must be rank 4, but got rank ${p.rank}.`), Mt(\"conv2d\", o, a);\n let l = n === \"NHWC\" ? u.shape[3] : u.shape[1];\n $(l === p.shape[2], () => `Error in conv2d: depth of input (${l}) must match input depth for filter ${p.shape[2]}.`), $(mr(t10, s), () => `Error in conv2D: Either strides or dilations must be 1. Got strides ${t10} and dilations '${s}'`), $(Vs(s), () => \"Error in conv2D: Dilated rates should be larger than 0.\"), $(Vs(t10), () => \"Error in conv2D: Strides should be larger than 0.\");\n let m = { x: u, filter: p }, d = { strides: t10, pad: o, dataFormat: n, dilations: s, dimRoundingMode: a }, f = T.runKernel(Uo, m, d);\n return c ? W(f, [f.shape[1], f.shape[2], f.shape[3]]) : f;\n}\nvar Ei = N({ conv2d_: WW });\nfunction UW(r, e, t10, o, n = \"NWC\", s = 1, a) {\n let i = v(r, \"x\", \"conv1d\"), p = v(e, \"filter\", \"conv1d\"), u = i, c = false;\n i.rank === 2 && (c = true, u = W(i, [1, i.shape[0], i.shape[1]])), $(u.rank === 3, () => `Error in conv1d: input must be rank 3, but got rank ${u.rank}.`), $(p.rank === 3, () => `Error in conv1d: filter must be rank 3, but got rank ${p.rank}.`), Mt(\"conv1d\", o, a), $(u.shape[2] === p.shape[1], () => `Error in conv1d: depth of input (${u.shape[2]}) must match input depth for filter ${p.shape[1]}.`), $(mr(t10, s), () => `Error in conv1D: Either stride or dilation must be 1. Got stride ${t10} and dilation '${s}'`), $(Vs(s), () => \"Error in conv1D: Dilated rates should be larger than 0.\"), $(Vs(t10), () => \"Error in conv1D: Stride should be larger than 0.\"), $(n === \"NWC\", () => `Error in conv1d: got dataFormat of ${n} but only NWC is currently supported.`);\n let l = W(p, [1, p.shape[0], p.shape[1], p.shape[2]]), m = W(u, [u.shape[0], 1, u.shape[1], u.shape[2]]), g = Ei(m, l, [1, t10], o, \"NHWC\", [1, s], a);\n return c ? W(g, [g.shape[2], g.shape[3]]) : W(g, [g.shape[0], g.shape[2], g.shape[3]]);\n}\nvar xv = N({ conv1d_: UW });\nfunction GW(r, e, t10, o, n, s = \"NHWC\", a) {\n $(r.length === e.rank, () => `Length of inShape (${r.length}) and rank of dy (${e.rank}) must match`);\n let i = r, p = e, u = false;\n e.rank === 3 && (u = true, p = W(e, [1, e.shape[0], e.shape[1], e.shape[2]]), i = [1, r[0], r[1], r[2]]), $(i.length === 4, () => `Error in conv2dDerInput: inShape must be length 4, but got length ${i.length}.`), $(p.rank === 4, () => `Error in conv2dDerInput: dy must be rank 4, but got rank ${p.rank}`), $(t10.rank === 4, () => `Error in conv2dDerInput: filter must be rank 4, but got rank ${t10.rank}`);\n let c = s === \"NHWC\" ? i[3] : i[1], l = s === \"NHWC\" ? p.shape[3] : p.shape[1];\n $(c === t10.shape[2], () => `Error in conv2dDerInput: depth of input (${c}) must match input depth for filter ${t10.shape[2]}.`), $(l === t10.shape[3], () => `Error in conv2dDerInput: depth of output (${l}) must match output depth for filter ${t10.shape[3]}.`), Mt(\"conv2dDerInput\", n, a);\n let m = { dy: p, filter: t10 }, d = { strides: o, pad: n, dataFormat: s, dimRoundingMode: a, inputShape: i }, f = T.runKernel(Go, m, d);\n return u ? W(f, [f.shape[1], f.shape[2], f.shape[3]]) : f;\n}\nvar Ym = N({ conv2DBackpropInput_: GW });\nfunction HW(r, e, t10, o, n, s) {\n let a = v(r, \"x\", \"conv2dTranspose\"), i = v(e, \"filter\", \"conv2dTranspose\");\n return Ym(t10, a, i, o, n, \"NHWC\", s);\n}\nvar yv = N({ conv2dTranspose_: HW });\nfunction KW(r, e, t10, o, n = \"NDHWC\", s = [1, 1, 1]) {\n let a = v(r, \"x\", \"conv3d\"), i = v(e, \"filter\", \"conv3d\"), p = a, u = false;\n a.rank === 4 && (u = true, p = W(a, [1, a.shape[0], a.shape[1], a.shape[2], a.shape[3]])), $(p.rank === 5, () => `Error in conv3d: input must be rank 5, but got rank ${p.rank}.`), $(i.rank === 5, () => `Error in conv3d: filter must be rank 5, but got rank ${i.rank}.`), $(p.shape[4] === i.shape[3], () => `Error in conv3d: depth of input (${p.shape[4]}) must match input depth for filter ${i.shape[3]}.`), $(mr(t10, s), () => `Error in conv3D: Either strides or dilations must be 1. Got strides ${t10} and dilations '${s}'`), $(n === \"NDHWC\", () => `Error in conv3d: got dataFormat of ${n} but only NDHWC is currently supported.`), $(Vs(s), () => \"Error in conv3D: Dilated rates should be larger than 0.\"), $(Vs(t10), () => \"Error in conv3D: Strides should be larger than 0.\");\n let c = { x: p, filter: i }, l = { strides: t10, pad: o, dataFormat: n, dilations: s }, m = T.runKernel(gp, c, l);\n return u ? W(m, [m.shape[1], m.shape[2], m.shape[3], m.shape[4]]) : m;\n}\nvar bv = N({ conv3d_: KW });\nfunction qW(r, e, t10, o, n) {\n $(r.length === e.rank, () => `Length of inShape (${r.length}) and rank of dy (${e.rank}) must match`);\n let s = r, a = e, i = false;\n e.rank === 4 && (i = true, a = W(e, [1, e.shape[0], e.shape[1], e.shape[2], e.shape[3]]), s = [1, r[0], r[1], r[2], r[3]]);\n let p = s[4], u = a.shape[4];\n $(s.length === 5, () => `Error in conv3dDerInput: inShape must be length 5, but got length ${s.length}.`), $(a.rank === 5, () => `Error in conv3dDerInput: dy must be rank 5, but got rank ${a.rank}`), $(t10.rank === 5, () => `Error in conv3dDerInput: filter must be rank 5, but got rank ${t10.rank}`), $(p === t10.shape[3], () => `Error in conv3dDerInput: depth of input (${p}) must match input depth for filter ${t10.shape[3]}.`), $(u === t10.shape[4], () => `Error in conv3dDerInput: depth of output (${u}) must match output depth for filter ${t10.shape[4]}.`);\n let c = { dy: a, filter: t10 }, l = { pad: n, strides: o, inputShape: s }, m = T.runKernel(xp, c, l);\n return i ? W(m, [m.shape[1], m.shape[2], m.shape[3], m.shape[4]]) : m;\n}\nvar Cv = N({ conv3DBackpropInput_: qW });\nfunction jW(r, e, t10, o, n) {\n let s = v(r, \"x\", \"conv3dTranspose\"), a = v(e, \"filter\", \"conv3dTranspose\");\n return Cv(t10, s, a, o, n);\n}\nvar Sv = N({ conv3dTranspose_: jW });\nfunction XW(r) {\n let t10 = { x: v(r, \"x\", \"cos\", \"float32\") };\n return T.runKernel(Ho, t10);\n}\nvar wv = N({ cos_: XW });\nfunction YW(r) {\n let t10 = { x: v(r, \"x\", \"cosh\", \"float32\") };\n return T.runKernel(Ko, t10);\n}\nvar Iv = N({ cosh_: YW });\nfunction QW(r, e = 0, t10 = false, o = false) {\n let s = { x: v(r, \"x\", \"cumprod\") }, a = { axis: e, exclusive: t10, reverse: o };\n return T.runKernel(qo, s, a);\n}\nvar vv = N({ cumprod_: QW });\nfunction ZW(r, e = 0, t10 = false, o = false) {\n let s = { x: v(r, \"x\", \"cumsum\") }, a = { axis: e, exclusive: t10, reverse: o };\n return T.runKernel(jo, s, a);\n}\nvar kv = N({ cumsum_: ZW });\nfunction JW(r, e, t10, o = false) {\n let n = v(r, \"x\", \"denseBincount\"), s = v(e, \"weights\", \"denseBincount\");\n $(n.dtype === \"int32\", () => `Error in denseBincount: input dtype must be int32, but got ${n.dtype}`), $(n.rank <= 2, () => `Error in denseBincount: input must be at most rank 2, but got rank ${n.rank}.`), $(t10 >= 0, () => `size must be non-negative, but got ${t10}.`), $(s.size === n.size || s.size === 0, () => `Error in denseBincount: weights must have the same shape as x or 0-length, but got x shape: ${n.shape}, weights shape: ${s.shape}.`);\n let a = { x: n, weights: s }, i = { size: t10, binaryOutput: o };\n return T.runKernel(ni, a, i);\n}\nvar Nv = N({ denseBincount_: JW });\nfunction eU(r, e, t10 = \"NHWC\") {\n let o = v(r, \"x\", \"depthToSpace\", \"float32\"), n = t10 === \"NHWC\" ? o.shape[1] : o.shape[2], s = t10 === \"NHWC\" ? o.shape[2] : o.shape[3], a = t10 === \"NHWC\" ? o.shape[3] : o.shape[1];\n $(e > 1, () => `blockSize should be > 1 for depthToSpace, but was: ${e}`), $(n * e >= 0, () => `Negative dimension size caused by overflow when multiplying\n ${n} and ${e} for depthToSpace with input shape\n ${o.shape}`), $(s * e >= 0, () => `Negative dimension size caused by overflow when multiplying\n ${s} and ${e} for depthToSpace with input shape\n ${o.shape}`), $(a % (e * e) === 0, () => `Dimension size must be evenly divisible by ${e * e} but is ${a} for depthToSpace with input shape ${o.shape}`);\n let i = { x: o }, p = { blockSize: e, dataFormat: t10 };\n return T.runKernel(Yo, i, p);\n}\nvar Tv = N({ depthToSpace_: eU });\nfunction tU(r, e, t10, o, n = \"NHWC\", s = [1, 1], a) {\n let i = v(r, \"x\", \"depthwiseConv2d\", \"float32\"), p = v(e, \"filter\", \"depthwiseConv2d\", \"float32\"), u = i, c = false;\n i.rank === 3 && (c = true, u = W(i, [1, i.shape[0], i.shape[1], i.shape[2]])), $(u.rank === 4, () => `Error in depthwiseConv2d: input must be rank 4, but got rank ${u.rank}.`), $(p.rank === 4, () => `Error in depthwiseConv2d: filter must be rank 4, but got rank ${p.rank}.`);\n let l = n === \"NHWC\" ? u.shape[3] : u.shape[1];\n $(l === p.shape[2], () => `Error in depthwiseConv2d: number of input channels (${l}) must match the inChannels dimension in filter ${p.shape[2]}.`), Mt(\"depthwiseConv2d\", o, a);\n let m = { x: u, filter: p }, d = { strides: t10, pad: o, dataFormat: n, dilations: s, dimRoundingMode: a }, f = T.runKernel(Qo, m, d);\n return c ? W(f, [f.shape[1], f.shape[2], f.shape[3]]) : f;\n}\nvar Bp = N({ depthwiseConv2d_: tU });\nfunction rU(r) {\n let t10 = { x: v(r, \"x\", \"diag\") };\n return T.runKernel(si, t10);\n}\nvar _v = N({ diag_: rU });\nfunction oU(r, e, t10, o, n = [1, 1], s = \"NHWC\") {\n let a = v(r, \"x\", \"dilation2d\"), i = v(e, \"filter\", \"dilation2d\");\n $(a.rank === 3 || a.rank === 4, () => `Error in dilation2d: input must be rank 3 or 4, but got rank ${a.rank}.`), $(i.rank === 3, () => `Error in dilation2d: filter must be rank 3, but got rank ${i.rank}.`), $(s === \"NHWC\", () => `Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${s}`);\n let p = a, u = false;\n a.rank === 3 && (p = W(a, [1, a.shape[0], a.shape[1], a.shape[2]]), u = true), $(p.shape[3] === i.shape[2], () => `Error in dilation2d: input and filter must have the same depth: ${p.shape[3]} vs ${i.shape[2]}`);\n let c = { x: p, filter: i }, l = { strides: t10, pad: o, dilations: n }, m = T.runKernel(ai, c, l);\n return u ? W(m, [m.shape[1], m.shape[2], m.shape[3]]) : m;\n}\nvar $v = N({ dilation2d_: oU });\nvar yr = {};\nGe(yr, { assertAndGetBroadcastShape: () => Je, getBroadcastDims: () => Ev, getReductionAxes: () => Qm });\nfunction Ev(r, e) {\n let t10 = r.length, o = [];\n for (let n = 0; n < t10; n++) {\n let s = t10 - 1 - n, a = r[s] || 1;\n (e[e.length - 1 - n] || 1) > 1 && a === 1 && o.unshift(s);\n }\n return o;\n}\nfunction Qm(r, e) {\n let t10 = [];\n for (let o = 0; o < e.length; o++) {\n let n = r[r.length - o - 1], s = e.length - o - 1, a = e[s];\n (n == null || n === 1 && a > 1) && t10.unshift(s);\n }\n return t10;\n}\nfunction Je(r, e) {\n let t10 = [], o = Math.max(r.length, e.length);\n for (let n = 0; n < o; n++) {\n let s = r[r.length - n - 1];\n s == null && (s = 1);\n let a = e[e.length - n - 1];\n if (a == null && (a = 1), s === 1)\n t10.unshift(a);\n else if (a === 1)\n t10.unshift(s);\n else if (s !== a) {\n let i = `Operands could not be broadcast together with shapes ${r} and ${e}.`;\n throw Error(i);\n } else\n t10.unshift(s);\n }\n return t10;\n}\nfunction nU(r, e) {\n let t10 = v(r, \"a\", \"equal\", \"string_or_numeric\"), o = v(e, \"b\", \"equal\", \"string_or_numeric\");\n [t10, o] = De(t10, o), Je(t10.shape, o.shape);\n let n = { a: t10, b: o };\n return T.runKernel(en, n);\n}\nvar Zm = N({ equal_: nU });\nfunction sU(r, e, t10) {\n let o = v(e, \"a\", \"where\"), n = v(t10, \"b\", \"where\"), s = v(r, \"condition\", \"where\", \"bool\"), a = Je(Je(s.shape, o.shape), n.shape), i = $i(s, a), p = $i(o, a), u = $i(n, a), c = { condition: i, t: p, e: u };\n return T.runKernel($s, c);\n}\nvar ss = N({ where_: sU });\nfunction aU(r) {\n let t10 = { x: v(r, \"x\", \"zerosLike\") };\n return T.runKernel(Os, t10);\n}\nvar Ut = N({ zerosLike_: aU });\nfunction iU(r, e) {\n let t10 = v(r, \"a\", \"div\"), o = v(e, \"b\", \"div\");\n [t10, o] = De(t10, o);\n let n = He(t10, o), s = Ut(n), a = Zm(o, s);\n return ss(a, s, n);\n}\nvar Av = N({ divNoNan_: iU });\nfunction uU(r, e) {\n let t10 = v(r, \"t1\", \"dot\"), o = v(e, \"t2\", \"dot\");\n $((t10.rank === 1 || t10.rank === 2) && (o.rank === 1 || o.rank === 2), () => `Error in dot: inputs must all be rank 1 or 2, but got ranks ${t10.rank} and ${o.rank}.`);\n let n = t10.rank === 1 ? t10.size : t10.shape[1], s = o.rank === 1 ? o.size : o.shape[0];\n if ($(n === s, () => `Error in dot: inner dimensions of inputs must match, but got ${n} and ${s}.`), t10.rank === 1 && o.rank === 1) {\n let a = W(t10, [1, -1]), i = W(o, [-1, 1]), p = Xe(a, i);\n return W(p, []);\n } else if (t10.rank === 1 && o.rank === 2) {\n let a = W(t10, [1, -1]), i = W(o, [o.shape[0], o.shape[1]]), p = Xe(a, i);\n return W(p, [p.size]);\n } else if (t10.rank === 2 && o.rank === 1) {\n let a = W(o, [-1, 1]), i = Xe(t10, a);\n return W(i, [i.size]);\n } else {\n let a = W(o, [o.shape[0], o.shape[1]]);\n return Xe(t10, a);\n }\n}\nvar Rv = N({ dot_: uU });\nfunction pU(r, ...e) {\n let t10 = e.map((n, s) => v(n, `tensors${s}`, \"einsum\")), o = { equation: r };\n return T.runKernel(ii, t10, o);\n}\nvar Dv = N({ einsum_: pU });\nfunction cU(r) {\n let t10 = { x: v(r, \"x\", \"elu\", \"float32\") };\n return T.runKernel(Jo, t10);\n}\nvar Jm = N({ elu_: cU });\nfunction lU(r) {\n let e = v(r, \"x\", \"erf\");\n $(e.dtype === \"int32\" || e.dtype === \"float32\", () => \"Input dtype must be `int32` or `float32`.\"), e.dtype === \"int32\" && (e = je(e, \"float32\"));\n let t10 = { x: e };\n return T.runKernel(da, t10);\n}\nvar Fv = N({ erf_: lU });\nfunction uC(r, e) {\n for (let t10 = 0; t10 < r.length; ++t10)\n if (r[r.length - t10 - 1] !== e - 1 - t10)\n return false;\n return true;\n}\nfunction Ov(r, e, t10) {\n let o = r.length + e.length, n = [], s = 0, a = 0;\n for (let i = 0; i < o; i++)\n t10.indexOf(i) === -1 ? n.push(r[s++]) : n.push(e[a++]);\n return n;\n}\nfunction mU(r, e) {\n let t10 = [], o = r.length;\n for (let s = 0; s < o; s++)\n e.indexOf(s) === -1 && t10.push(r[s]);\n let n = e.map((s) => r[s]);\n return [t10, n];\n}\nfunction Ea(r, e) {\n let t10 = e.map((o) => 1);\n return Ov(r, t10, e);\n}\nfunction dU(r, e, t10) {\n $(uC(e, t10), () => `${r} supports only inner-most axes for now. Got axes ${e} and rank-${t10} input.`);\n}\nfunction fU(r, e) {\n if (uC(r, e))\n return null;\n let t10 = [];\n for (let o = 0; o < e; ++o)\n r.indexOf(o) === -1 && t10.push(o);\n return r.forEach((o) => t10.push(o)), t10;\n}\nfunction hU(r) {\n return r.map((e, t10) => [t10, e]).sort((e, t10) => e[1] - t10[1]).map((e) => e[0]);\n}\nfunction gU(r, e) {\n let t10 = [];\n for (let o = e - r; o < e; ++o)\n t10.push(o);\n return t10;\n}\nfunction yU(r, e = null, t10 = false) {\n let n = { x: v(r, \"x\", \"max\") }, s = { reductionIndices: e, keepDims: t10 };\n return T.runKernel(yn, n, s);\n}\nvar Gs = N({ max_: yU });\nfunction bU(r, e = null, t10 = false) {\n let n = { x: v(r, \"x\", \"min\") }, s = { axis: e, keepDims: t10 };\n return T.runKernel(wn, n, s);\n}\nvar rl = N({ min_: bU });\nfunction CU(r, e) {\n let t10 = v(r, \"base\", \"pow\"), o = v(e, \"exp\", \"pow\");\n [t10, o] = De(t10, o);\n let n = { a: t10, b: o };\n return T.runKernel(An, n);\n}\nvar Aa = N({ pow_: CU });\nfunction Ce(r, e) {\n if ((Bt(r) && e !== \"string\" || Array.isArray(r)) && e !== \"complex64\")\n throw new Error(\"Error creating a new Scalar: value must be a primitive (number|boolean|string)\");\n if (e === \"string\" && Bt(r) && !(r instanceof Uint8Array))\n throw new Error(\"When making a scalar from encoded string, the value must be `Uint8Array`.\");\n return xr(r, [], [], e);\n}\nfunction SU(r) {\n let t10 = { x: v(r, \"x\", \"sqrt\", \"float32\") };\n return T.runKernel(Hn, t10);\n}\nvar $r = N({ sqrt_: SU });\nfunction wU(r) {\n let e = v(r, \"x\", \"square\"), t10 = {};\n return T.runKernel(\"Square\", { x: e }, t10);\n}\nvar Qt = N({ square_: wU });\nfunction IU(r, e = null, t10 = false) {\n let o = v(r, \"x\", \"sum\");\n o.dtype === \"bool\" && (o = je(o, \"int32\"));\n let n = { x: o }, s = { axis: e, keepDims: t10 };\n return T.runKernel(Kn, n, s);\n}\nvar et = N({ sum_: IU });\nfunction vU(r, e = \"euclidean\", t10 = null, o = false) {\n r = v(r, \"x\", \"norm\");\n let n = Pv(r, e, t10), s = n.shape;\n if (o) {\n let a = Ja(t10, r.shape);\n s = Ea(n.shape, a);\n }\n return W(n, s);\n}\nfunction Pv(r, e, t10 = null) {\n if (r.rank === 0)\n return Yt(r);\n if (r.rank !== 1 && t10 === null)\n return Pv(W(r, [-1]), e, t10);\n if (r.rank === 1 || typeof t10 == \"number\" || Array.isArray(t10) && t10.length === 1) {\n if (e === 1)\n return et(Yt(r), t10);\n if (e === 1 / 0)\n return Gs(Yt(r), t10);\n if (e === -1 / 0)\n return rl(Yt(r), t10);\n if (e === \"euclidean\" || e === 2)\n return $r(et(Aa(Yt(r), Ce(2, \"int32\")), t10));\n throw new Error(`Error in norm: invalid ord value: ${e}`);\n }\n if (Array.isArray(t10) && t10.length === 2) {\n if (e === 1)\n return Gs(et(Yt(r), t10[0]), t10[1] - 1);\n if (e === 1 / 0)\n return Gs(et(Yt(r), t10[1]), t10[0]);\n if (e === -1 / 0)\n return rl(et(Yt(r), t10[1]), t10[0]);\n if (e === \"fro\" || e === \"euclidean\")\n return $r(et(Qt(r), t10));\n throw new Error(`Error in norm: invalid ord value: ${e}`);\n }\n throw new Error(`Error in norm: invalid axis: ${t10}`);\n}\nvar iu = N({ norm_: vU });\nfunction kU(r, e = null, t10 = false) {\n return iu(r, \"euclidean\", e, t10);\n}\nvar Mv = N({ euclideanNorm_: kU });\nfunction NU(r) {\n let t10 = { x: v(r, \"x\", \"exp\") };\n return T.runKernel(tn, t10);\n}\nvar So = N({ exp_: NU });\nfunction TU(r, e = 0) {\n let t10 = v(r, \"x\", \"expandDims\", \"string_or_numeric\");\n $(e <= t10.rank, () => \"Axis must be <= rank of the tensor\");\n let o = { input: t10 }, n = { dim: e };\n return T.runKernel(Ss, o, n);\n}\nvar Ra = N({ expandDims_: TU });\nfunction _U(r) {\n let t10 = { x: v(r, \"x\", \"expm1\") };\n return T.runKernel(fa, t10);\n}\nvar Lv = N({ expm1_: _U });\nfunction $U(r, e) {\n let t10 = v(r, \"x\", \"tile\", \"string_or_numeric\");\n $(t10.rank === e.length, () => `Error in transpose: rank of input ${t10.rank} must match length of reps ${e}.`);\n let o = { x: t10 }, n = { reps: e };\n return T.runKernel(to, o, n);\n}\nvar Ai = N({ tile_: $U });\nfunction EU(r, e, t10, o = \"float32\") {\n e == null && (e = r);\n let n = le([r, e], o), s = r <= e ? r : e;\n for (let i = 0; i < s; ++i)\n n.set(1, i, i);\n let a = W(n.toTensor(), [r, e]);\n if (t10 == null)\n return a;\n if (t10.length === 1)\n return Ai(Ra(a, 0), [t10[0], 1, 1]);\n if (t10.length === 2)\n return Ai(Ra(Ra(a, 0), 0), [t10[0], t10[1], 1, 1]);\n if (t10.length === 3)\n return Ai(Ra(Ra(Ra(a, 0), 0), 0), [t10[0], t10[1], t10[2], 1, 1]);\n throw new Error(`eye() currently supports only 1D and 2D batchShapes, but received ${t10.length}D.`);\n}\nvar ed = N({ eye_: EU });\nfunction AU(r) {\n let t10 = { x: v(r, \"x\", \"floor\", \"float32\") };\n return T.runKernel(on, t10);\n}\nvar td = N({ floor_: AU });\nfunction RU(r, e, t10 = 0, o = 0) {\n let n = v(r, \"x\", \"gather\"), s = v(e, \"indices\", \"gather\", \"int32\"), a = { x: n, indices: s }, i = { axis: t10, batchDims: o };\n return T.runKernel(Is, a, i);\n}\nvar rd = N({ gather_: RU });\nfunction DU(r, e) {\n let t10 = v(r, \"a\", \"greater\", \"string_or_numeric\"), o = v(e, \"b\", \"greater\", \"string_or_numeric\");\n [t10, o] = De(t10, o), Je(t10.shape, o.shape);\n let n = { a: t10, b: o };\n return T.runKernel(un, n);\n}\nvar uu = N({ greater_: DU });\nfunction FU(r, e) {\n let t10 = v(r, \"a\", \"greaterEqual\", \"string_or_numeric\"), o = v(e, \"b\", \"greaterEqual\", \"string_or_numeric\");\n [t10, o] = De(t10, o), Je(t10.shape, o.shape);\n let n = { a: t10, b: o };\n return T.runKernel(pn, n);\n}\nvar od = N({ greaterEqual_: FU });\nfunction OU(r) {\n let t10 = { input: v(r, \"input\", \"imag\") };\n return T.runKernel(ci, t10);\n}\nvar Ri = N({ imag_: OU });\nfunction PU(r) {\n let t10 = { x: v(r, \"x\", \"isFinite\") };\n return T.runKernel(ha, t10);\n}\nvar Bv = N({ isFinite_: PU });\nfunction MU(r) {\n let t10 = { x: v(r, \"x\", \"isInf\") };\n return T.runKernel(ga, t10);\n}\nvar Vv = N({ isInf_: MU });\nfunction LU(r) {\n let t10 = { x: v(r, \"x\", \"isNaN\") };\n return T.runKernel(cn, t10);\n}\nvar zv = N({ isNaN_: LU });\nfunction BU(r, e = 0.2) {\n let o = { x: v(r, \"x\", \"leakyRelu\") }, n = { alpha: e };\n return T.runKernel(ln, o, n);\n}\nvar nd = N({ leakyRelu_: BU });\nfunction VU(r, e) {\n let t10 = v(r, \"a\", \"less\", \"string_or_numeric\"), o = v(e, \"b\", \"less\", \"string_or_numeric\");\n [t10, o] = De(t10, o), Je(t10.shape, o.shape);\n let n = { a: t10, b: o };\n return T.runKernel(mn, n);\n}\nvar Wv = N({ less_: VU });\nfunction zU(r, e) {\n let t10 = v(r, \"a\", \"lessEqual\", \"string_or_numeric\"), o = v(e, \"b\", \"lessEqual\", \"string_or_numeric\");\n [t10, o] = De(t10, o), Je(t10.shape, o.shape);\n let n = { a: t10, b: o };\n return T.runKernel(dn, n);\n}\nvar Vp = N({ lessEqual_: zU });\nfunction Uv(r, e, t10) {\n if (t10 <= 0)\n throw new Error(\"The number of values should be positive.\");\n let o = { start: r, stop: e, num: t10 };\n return T.runKernel(li, {}, o);\n}\nfunction WU(r, e = 5, t10 = 1, o = 1, n = 0.5) {\n let s = v(r, \"x\", \"localResponseNormalization\");\n $(s.rank === 4 || s.rank === 3, () => `Error in localResponseNormalization: x must be rank 3 or 4 but got\n rank ${s.rank}.`), $(sa(e), () => `Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${e}.`);\n let a = s, i = false;\n s.rank === 3 && (i = true, a = W(s, [1, s.shape[0], s.shape[1], s.shape[2]]));\n let p = { x: a }, u = { depthRadius: e, bias: t10, alpha: o, beta: n }, c = T.runKernel(mi, p, u);\n return i ? W(c, [c.shape[1], c.shape[2], c.shape[3]]) : c;\n}\nvar Gv = N({ localResponseNormalization_: WU });\nfunction UU(r) {\n let t10 = { x: v(r, \"x\", \"log\", \"float32\") };\n return T.runKernel(fn, t10);\n}\nvar Da = N({ log_: UU });\nfunction GU(r) {\n let t10 = { x: v(r, \"x\", \"log1p\") };\n return T.runKernel(xa, t10);\n}\nvar sd = N({ log1p_: GU });\nfunction HU(r) {\n return $(gs(r), () => \"The f passed in grad(f) must be a function\"), (e, t10) => {\n let o = v(e, \"x\", \"tf.grad\", \"string_or_numeric\"), n = t10 != null ? v(t10, \"dy\", \"tf.grad\") : null;\n return T.tidy(() => {\n let { value: s, grads: a } = T.gradients(() => r(o), [o], n);\n return n != null && gt(s.shape, n.shape, \"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)\"), ad(a), a[0];\n });\n };\n}\nfunction KU(r) {\n return $(gs(r), () => \"The f passed in grads(f) must be a function\"), (e, t10) => {\n $(Array.isArray(e), () => \"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s\");\n let o = _a(e, \"args\", \"tf.grads\", \"string_or_numeric\"), n = t10 != null ? v(t10, \"dy\", \"tf.grads\") : null;\n return T.tidy(() => {\n let { value: s, grads: a } = T.gradients(() => r(...o), o, n);\n return n != null && gt(s.shape, n.shape, \"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])\"), ad(a), a;\n });\n };\n}\nfunction qU(r) {\n return $(gs(r), () => \"The f passed in valueAndGrad(f) must be a function\"), (e, t10) => {\n $(e instanceof it, () => \"The x passed in valueAndGrad(f)(x) must be a tensor\"), $(t10 == null || t10 instanceof it, () => \"The dy passed in valueAndGrad(f)(x, dy) must be a tensor\");\n let { grads: o, value: n } = T.gradients(() => r(e), [e], t10);\n return ad(o), { grad: o[0], value: n };\n };\n}\nfunction jU(r) {\n return $(gs(r), () => \"The f passed in valueAndGrads(f) must be a function\"), (e, t10) => {\n $(Array.isArray(e) && e.every((n) => n instanceof it), () => \"The args passed in valueAndGrads(f)(args) must be array of tensors\"), $(t10 == null || t10 instanceof it, () => \"The dy passed in valueAndGrads(f)(args, dy) must be a tensor\");\n let o = T.gradients(() => r(...e), e, t10);\n return t10 != null && gt(o.value.shape, t10.shape, \"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])\"), ad(o.grads), o;\n };\n}\nfunction pC(r, e) {\n $(gs(r), () => \"The f passed in variableGrads(f) must be a function\"), $(e == null || Array.isArray(e) && e.every((u) => u instanceof Na), () => \"The varList passed in variableGrads(f, varList) must be an array of variables\");\n let t10 = e != null;\n if (!t10) {\n e = [];\n for (let u in T.registeredVariables)\n e.push(T.registeredVariables[u]);\n }\n let o = t10 ? e.filter((u) => !u.trainable) : null, n = e.length;\n e = e.filter((u) => u.trainable), $(e.length > 0, () => `variableGrads() expects at least one of the input variables to be trainable, but none of the ${n} variables is trainable.`);\n let s = true, { value: a, grads: i } = T.gradients(r, e, null, s);\n $(i.some((u) => u != 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().\"), $(a.rank === 0, () => `The f passed in variableGrads(f) must return a scalar, but it returned a rank-${a.rank} tensor`);\n let p = {};\n return e.forEach((u, c) => {\n i[c] != null && (p[u.name] = i[c]);\n }), o != null && o.forEach((u) => p[u.name] = null), { value: a, grads: p };\n}\nfunction br(r) {\n return T.customGrad(r);\n}\nfunction ad(r) {\n if (r.filter((t10) => t10 == null).length > 0)\n throw new Error(`Cannot compute gradient of y=f(x) with respect to x. Make sure that\n the f you passed encloses all operations that lead from x to y.`);\n}\nfunction XU(r) {\n let t10 = { x: v(r, \"x\", \"neg\") };\n return T.runKernel(vs, t10);\n}\nvar Cr = N({ neg_: XU });\nfunction YU(r) {\n let t10 = { x: v(r, \"x\", \"softplus\") };\n return T.runKernel(Ia, t10);\n}\nvar id = N({ softplus_: YU });\nfunction QU(r) {\n let e = v(r, \"x\", \"logSigmoid\");\n return br((o) => ({ value: Cr(id(Cr(o))), gradFunc: (a) => ne(a, Ws(Cr(o))) }))(e);\n}\nvar Hv = N({ logSigmoid_: QU });\nfunction ZU(r, e) {\n let t10 = v(r, \"a\", \"sub\"), o = v(e, \"b\", \"sub\");\n [t10, o] = De(t10, o);\n let n = { a: t10, b: o };\n return T.runKernel(Yn, n);\n}\nvar ke = N({ sub_: ZU });\nfunction JU(r, e = -1) {\n let t10 = v(r, \"logits\", \"logSoftmax\");\n if (e === -1 && (e = t10.rank - 1), e !== t10.rank - 1)\n throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${t10.rank} and axis was ${e}`);\n return br((n, s) => {\n let i = Gs(n, e, true), p = ke(n, i), u = ke(je(p, \"float32\"), Da(et(So(p), e, true)));\n return s([u]), { value: u, gradFunc: (l, m) => {\n let [d] = m, f = true, h = So(d);\n return ke(l, ne(et(l, e, f), h));\n } };\n })(t10);\n}\nvar Kv = N({ logSoftmax_: JU });\nfunction e4(r, e = null, t10 = false) {\n let o = v(r, \"x\", \"logSumExp\"), n = Ja(e, o.shape), s = Gs(o, n, true), a = ke(o, s), i = So(a), p = et(i, n), u = Da(p), c = be(W(s, u.shape), u);\n if (t10) {\n let l = Ea(c.shape, n);\n return W(c, l);\n }\n return c;\n}\nvar ud = N({ logSumExp_: e4 });\nfunction t4(r, e) {\n let t10 = v(r, \"a\", \"logicalAnd\", \"bool\"), o = v(e, \"b\", \"logicalAnd\", \"bool\");\n Je(t10.shape, o.shape);\n let n = { a: t10, b: o };\n return T.runKernel(hn, n);\n}\nvar pu = N({ logicalAnd_: t4 });\nfunction r4(r) {\n let t10 = { x: v(r, \"x\", \"logicalNot\", \"bool\") };\n return T.runKernel(gn, t10);\n}\nvar pd = N({ logicalNot_: r4 });\nfunction o4(r, e) {\n let t10 = v(r, \"a\", \"logicalOr\", \"bool\"), o = v(e, \"b\", \"logicalOr\", \"bool\");\n Je(t10.shape, o.shape);\n let n = { a: t10, b: o };\n return T.runKernel(xn, n);\n}\nvar cd = N({ logicalOr_: o4 });\nfunction n4(r, e) {\n let t10 = v(r, \"a\", \"logicalXor\", \"bool\"), o = v(e, \"b\", \"logicalXor\", \"bool\");\n return Je(t10.shape, o.shape), pu(cd(r, e), pd(pu(r, e)));\n}\nvar qv = N({ logicalXor_: n4 });\nvar ld = 2147483648;\nfunction s4(r, e, t10 = \"left\") {\n let o = v(r, \"sortedSequence\", \"searchSorted\"), n = v(e, \"values\", \"searchSorted\"), s = o.shape[o.shape.length - 1], a = n.shape[n.shape.length - 1], i = W(o, [-1, s]), p = W(n, [-1, a]);\n if (i.rank < 2)\n throw new Error(\"Sorted input argument must be at least 2-dimensional\");\n if (i.shape[0] !== p.shape[0])\n throw new Error(\"Leading dimension of 'sortedSequence' and 'values' must match.\");\n if (We(p.shape) >= ld)\n throw new Error(`values tensor size must less than ${ld}`);\n if (i.shape[1] >= ld)\n throw new Error(`trailing dim_size must less than ${ld} for int32 output type, was ${i.shape[1]}`);\n let u = { sortedSequence: i, values: p }, c = { side: t10 };\n return T.runKernel(fi, u, c);\n}\nvar ol = N({ searchSorted_: s4 });\nfunction jv(r, e) {\n return ol(r, e, \"left\");\n}\nfunction a4(r, e, t10, o, n) {\n let s = v(r, \"x\", \"maxPool\"), a = 1, i = s, p = false;\n s.rank === 3 && (p = true, i = W(s, [1, s.shape[0], s.shape[1], s.shape[2]])), $(i.rank === 4, () => `Error in maxPool: input must be rank 4 but got rank ${i.rank}.`), $(mr(t10, a), () => `Error in maxPool: Either strides or dilations must be 1. Got strides ${t10} and dilations '${a}'`), Mt(\"maxPool\", o, n);\n let u = { x: i }, c = { filterSize: e, strides: t10, pad: o, dimRoundingMode: n }, l = T.runKernel(Cn, u, c);\n return p ? W(l, [l.shape[1], l.shape[2], l.shape[3]]) : l;\n}\nvar md = N({ maxPool_: a4 });\nfunction i4(r, e = [1, 1, 1], t10, o, n, s = \"NDHWC\") {\n let a = v(r, \"x\", \"maxPool3d\"), i = a, p = false;\n a.rank === 4 && (p = true, i = W(a, [1, a.shape[0], a.shape[1], a.shape[2], a.shape[3]])), $(i.rank === 5, () => `Error in maxPool3d: x must be rank 5 but got rank ${i.rank}.`), $(s === \"NDHWC\", () => `Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`), Mt(\"maxPool3d\", o, n);\n let u = { x: i }, c = { filterSize: e, strides: t10, pad: o, dimRoundingMode: n, dataFormat: s }, l = T.runKernel(Cp, u, c);\n return p ? W(l, [l.shape[1], l.shape[2], l.shape[3], l.shape[4]]) : l;\n}\nvar Xv = N({ maxPool3d_: i4 });\nfunction u4(r, e, t10, o, n = false) {\n let a = { x: v(r, \"x\", \"maxPoolWithArgmax\") }, i = { filterSize: e, strides: t10, pad: o, includeBatchInIndex: n }, p = T.runKernel(Sp, a, i);\n return { result: p[0], indexes: p[1] };\n}\nvar Yv = N({ maxPoolWithArgmax_: u4 });\nfunction p4(r, e) {\n let t10 = v(r, \"a\", \"maximum\"), o = v(e, \"b\", \"maximum\");\n [t10, o] = De(t10, o), t10.dtype === \"bool\" && (t10 = je(t10, \"int32\"), o = je(o, \"int32\")), Je(t10.shape, o.shape);\n let n = { a: t10, b: o };\n return T.runKernel(bn, n);\n}\nvar dd = N({ maximum_: p4 });\nfunction c4(r, e = null, t10 = false) {\n let n = { x: v(r, \"x\", \"mean\") }, s = { axis: e, keepDims: t10 };\n return T.runKernel(Sn, n, s);\n}\nvar cu = N({ mean_: c4 });\nfunction Br(r, e = \"float32\") {\n if (bt(r), e === \"complex64\") {\n let o = Br(r, \"float32\"), n = Br(r, \"float32\");\n return Tr(o, n);\n }\n let t10 = lp(We(r), e);\n return T.makeTensor(t10, r, e);\n}\nfunction Hs(r, e = \"float32\") {\n if (bt(r), e === \"complex64\") {\n let o = Hs(r, \"float32\"), n = Br(r, \"float32\");\n return Tr(o, n);\n }\n let t10 = Wc(We(r), e);\n return T.makeTensor(t10, r, e);\n}\nfunction Qv(r, e, { indexing: t10 = \"xy\" } = {}) {\n if (t10 !== \"xy\" && t10 !== \"ij\")\n throw new TypeError(`${t10} is not a valid third argument to meshgrid`);\n if (r === void 0)\n return [];\n let o = v(r, \"x\", \"meshgrid\", r instanceof it ? r.dtype : \"float32\");\n if (e === void 0)\n return [o];\n let n = v(e, \"y\", \"meshgrid\", e instanceof it ? e.dtype : \"float32\"), s = We(o.shape), a = We(n.shape);\n return t10 === \"xy\" ? (o = W(o, [1, -1]), n = W(n, [-1, 1]), [Xe(Hs([a, 1], o.dtype), o), Xe(n, Hs([1, s], n.dtype))]) : (o = W(o, [-1, 1]), n = W(n, [1, -1]), [Xe(o, Hs([1, a], o.dtype)), Xe(Hs([s, 1], n.dtype), n)]);\n}\nfunction l4(r, e) {\n let t10 = v(r, \"a\", \"minimum\"), o = v(e, \"b\", \"minimum\");\n [t10, o] = De(t10, o), t10.dtype === \"bool\" && (t10 = je(t10, \"int32\"), o = je(o, \"int32\")), Je(t10.shape, o.shape);\n let n = { a: t10, b: o };\n return T.runKernel(In, n);\n}\nvar fd = N({ minimum_: l4 });\nfunction m4(r, e, t10) {\n $(t10 === \"reflect\" || t10 === \"symmetric\", () => `Invalid mode. Mode must be either reflect or symmetric. Got ${t10}.`);\n let o = v(r, \"x\", \"mirrorPad\");\n if (o.rank === 0)\n throw new Error(\"mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad\");\n $(e.length === o.rank, () => `Padding doesn't match input. Must be ${o.rank}. Got ${e.length}.`);\n let n = t10 === \"reflect\" ? 1 : 0;\n for (let i = 0; i < o.rank; i++)\n $(e[i].length === 2, () => \"Invalid number of paddings. Must be length of 2 each.\"), $(e[i][0] >= 0 && e[i][0] <= o.shape[i] - n && e[i][1] >= 0 && e[i][1] <= o.shape[i] - n, () => `Padding in dimension ${i} cannot be greater than or equal to ${o.shape[i] - n} or less than 0 for input of shape ${o.shape}`);\n let s = { paddings: e, mode: t10 }, a = { x: o };\n return T.runKernel(vn, a, s);\n}\nvar Zv = N({ mirrorPad_: m4 });\nfunction d4(r, e) {\n let t10 = v(r, \"a\", \"mod\"), o = v(e, \"b\", \"mod\");\n [t10, o] = De(t10, o);\n let n = { a: t10, b: o };\n return T.runKernel(ya, n);\n}\nvar Jv = N({ mod_: d4 });\nfunction f4(r, e = null, t10 = false) {\n r = v(r, \"x\", \"moments\");\n let o = Ja(e, r.shape), n = cu(r, o, t10), s = n.shape;\n t10 || (s = Ea(n.shape, o));\n let a = Qt(ke(je(r, \"float32\"), W(n, s))), i = cu(a, o, t10);\n return { mean: n, variance: i };\n}\nvar ek = N({ moments_: f4 });\nfunction h4(r, e, t10, o) {\n let n = v(e, \"data\", \"multiRNNCell\"), s = _a(t10, \"c\", \"multiRNNCell\"), a = _a(o, \"h\", \"multiRNNCell\"), i = n, p = [];\n for (let l = 0; l < r.length; l++) {\n let m = r[l](i, s[l], a[l]);\n p.push(m[0]), p.push(m[1]), i = m[1];\n }\n let u = [], c = [];\n for (let l = 0; l < p.length; l += 2)\n u.push(p[l]), c.push(p[l + 1]);\n return [u, c];\n}\nvar tk = N({ multiRNNCell_: h4 });\nfunction g4(r, e, t10, o = false) {\n let n = v(r, \"logits\", \"multinomial\"), s = n.size, a = n.rank;\n if (s < 2)\n throw new Error(`Error in multinomial: you need at least 2 outcomes, but got ${s}.`);\n if (a > 2)\n throw new Error(`Rank of probabilities must be 1 or 2, but is ${a}`);\n t10 = t10 || Math.random();\n let p = { logits: a === 1 ? W(n, [1, -1]) : n }, u = { numSamples: e, seed: t10, normalized: o }, c = T.runKernel(wp, p, u);\n return a === 1 ? W(c, [c.size]) : c;\n}\nvar rk = N({ multinomial_: g4 });\nfunction x4(r, e) {\n let t10 = v(r, \"a\", \"notEqual\", \"string_or_numeric\"), o = v(e, \"b\", \"notEqual\", \"string_or_numeric\");\n [t10, o] = De(t10, o), Je(t10.shape, o.shape);\n let n = { a: t10, b: o };\n return T.runKernel(Nn, n);\n}\nvar hd = N({ notEqual_: x4 });\nfunction y4(r, e, t10 = 1, o = 0, n = \"int32\") {\n if (e < 2)\n throw new Error(`Error in oneHot: depth must be >=2, but it is ${e}`);\n let a = { indices: v(r, \"indices\", \"oneHot\", \"int32\") }, i = { dtype: n, depth: e, onValue: t10, offValue: o };\n return T.runKernel($n, a, i);\n}\nvar nl = N({ oneHot_: y4 });\nfunction b4(r) {\n let t10 = { x: v(r, \"x\", \"onesLike\") };\n return T.runKernel(ks, t10);\n}\nvar ok = N({ onesLike_: b4 });\nfunction C4(r, e) {\n let t10 = v(r, \"v1\", \"outerProduct\"), o = v(e, \"v2\", \"outerProduct\");\n $(t10.rank === 1 && o.rank === 1, () => `Error in outerProduct: inputs must be rank 1, but got ranks ${t10.rank} and ${o.rank}.`);\n let n = W(t10, [-1, 1]), s = W(o, [1, -1]);\n return Xe(n, s);\n}\nvar nk = N({ outerProduct_: C4 });\nfunction S4(r, e, t10 = 0) {\n let o = v(r, \"x\", \"pad\");\n if (o.rank === 0)\n throw new Error(\"pad(scalar) is not defined. Pass non-scalar to pad\");\n let n = { paddings: e, constantValue: t10 }, s = { x: o };\n return T.runKernel(En, s, n);\n}\nvar Ks = N({ pad_: S4 });\nfunction w4(r, e, t10 = 0) {\n return $(e.length === 2, () => \"Invalid number of paddings. Must be length of 2.\"), Ks(r, [e], t10);\n}\nvar sk = N({ pad1d_: w4 });\nfunction I4(r, e, t10 = 0) {\n return $(e.length === 2 && e[0].length === 2 && e[1].length === 2, () => \"Invalid number of paddings. Must be length of 2 each.\"), Ks(r, e, t10);\n}\nvar ak = N({ pad2d_: I4 });\nfunction v4(r, e, t10 = 0) {\n return $(e.length === 3 && e[0].length === 2 && e[1].length === 2 && e[2].length === 2, () => \"Invalid number of paddings. Must be length of 2 each.\"), Ks(r, e, t10);\n}\nvar ik = N({ pad3d_: v4 });\nfunction k4(r, e, t10 = 0) {\n return $(e.length === 4 && e[0].length === 2 && e[1].length === 2 && e[2].length === 2 && e[3].length === 2, () => \"Invalid number of paddings. Must be length of 2 each.\"), Ks(r, e, t10);\n}\nvar uk = N({ pad4d_: k4 });\nfunction N4(r, e, t10) {\n let o = v(r, \"x\", \"spaceToBatchND\");\n $(o.rank >= 1 + e.length, () => `input rank ${o.rank} should be > than [blockShape] ${e.length}`), $(t10.length === e.length, () => `paddings.shape[0] ${t10.length} must be equal to [blockShape] ${e.length}`), $(o.shape.reduce((a, i, p) => p > 0 && p <= e.length ? a && (i + t10[p - 1][0] + t10[p - 1][1]) % e[p - 1] === 0 : a, true), () => `input spatial dimensions ${o.shape.slice(1)} with paddings ${t10.toString()} must be divisible by blockShapes ${e.toString()}`);\n let n = { x: o }, s = { blockShape: e, paddings: t10 };\n return T.runKernel(As, n, s);\n}\nvar gd = N({ spaceToBatchND_: N4 });\nfunction T4(r, e, t10, o, n, s, a) {\n n == null && (n = [1, 1]), s == null && (s = 1), o === 0 && (o = \"valid\");\n let i = v(r, \"x\", \"maxPool\"), p = i, u = false;\n i.rank === 3 && (u = true, p = W(i, [1, i.shape[0], i.shape[1], i.shape[2]])), $(mr(s, n), () => `Error in pool: Either strides or dilations must be 1. Got strides ${s} and dilations '${n}'`);\n let c = aC(p.shape, e, s, n, o), l = [c.dilationHeight, c.dilationWidth], m;\n o === \"same\" ? m = $4([c.filterHeight, c.filterWidth], l) : m = [[0, 0], [0, 0]];\n let d = l[0] === 1 && l[1] === 1, [f, h] = _4([c.inHeight, c.inWidth], l, m), g = d ? o : \"valid\", x = d ? p : gd(p, l, f), C = (t10 === \"avg\" ? () => qm(x, e, s, g, a) : () => md(x, e, s, g, a))(), w = d ? C : jm(C, l, h);\n return u ? W(w, [w.shape[1], w.shape[2], w.shape[3]]) : w;\n}\nfunction _4(r, e, t10) {\n let o = t10.map((c) => c[0]), n = t10.map((c) => c[1]), s = r.concat(o, n), a = e.map((c, l) => (c - s[l] % c) % c), i = n.map((c, l) => c + a[l]), p = e.map((c, l) => [o[l], i[l]]), u = e.map((c, l) => [0, a[l]]);\n return [p, u];\n}\nfunction $4(r, e) {\n let o = r.map((a, i) => a + (a - 1) * (e[i] - 1)).map((a) => a - 1), n = o.map((a) => Math.floor(a / 2)), s = o.map((a, i) => a - n[i]);\n return o.map((a, i) => [n[i], s[i]]);\n}\nvar pk = N({ pool_: T4 });\nfunction E4(r, e) {\n let t10 = v(r, \"x\", \"prelu\"), o = v(e, \"alpha\", \"prelu\"), n = { x: t10, alpha: o };\n return T.runKernel(Rn, n);\n}\nvar xd = N({ prelu_: E4 });\nfunction A4(r, e = null, t10 = false) {\n let o = v(r, \"x\", \"prod\");\n o.dtype === \"bool\" && (o = je(o, \"int32\"));\n let n = { x: o }, s = { axis: e, keepDims: t10 };\n return T.runKernel(Dn, n, s);\n}\nvar ck = N({ prod_: A4 });\nfunction R4(r, e, t10, o) {\n let n = r.map((c, l) => v(c, `tensors${l}`, \"raggedGather\", \"int32\")), s = v(e, \"paramsDenseValues\", \"raggedGather\"), a = v(t10, \"indices\", \"raggedGather\", \"int32\"), i = { paramsNestedSplits: n, paramsDenseValues: s, indices: a }, p = { outputRaggedRank: o }, u = T.runKernel(Ip, i, p);\n return { outputNestedSplits: u.slice(0, u.length - 1), outputDenseValues: u[u.length - 1] };\n}\nvar lk = N({ raggedGather_: R4 });\nfunction D4(r, e, t10) {\n let o = v(r, \"starts\", \"raggedRange\"), n = v(e, \"limits\", \"raggedRange\", o.dtype), s = v(t10, \"deltas\", \"raggedRange\", o.dtype), a = { starts: o, limits: n, deltas: s }, i = T.runKernel(vp, a);\n return { rtNestedSplits: i[0], rtDenseValues: i[1] };\n}\nvar mk = N({ raggedRange_: D4 });\nfunction F4(r, e, t10, o, n) {\n let s = v(r, \"shape\", \"raggedTensorToTensor\", \"int32\"), a = v(e, \"values\", \"raggedTensorToTensor\"), i = v(t10, \"defaultValue\", \"raggedTensorToTensor\", a.dtype), p = o.map((l, m) => v(l, `tensors${m}`, \"raggedTensorToTensor\", \"int32\")), u = { shape: s, values: a, defaultValue: i, rowPartitionTensors: p }, c = { rowPartitionTypes: n };\n return T.runKernel(kp, u, c);\n}\nvar dk = N({ raggedTensorToTensor_: F4 });\nfunction O4(r, e, t10) {\n bt(r);\n let o = We(r), n = null;\n if (t10 == null || t10 === \"float32\")\n n = new Float32Array(o);\n else if (t10 === \"int32\")\n n = new Int32Array(o);\n else if (t10 === \"bool\")\n n = new Uint8Array(o);\n else\n throw new Error(`Unknown data type ${t10}`);\n for (let s = 0; s < o; s++)\n n[s] = e();\n return T.makeTensor(n, r, t10);\n}\nvar fk = N({ rand_: O4 });\nvar wd = ap(gC());\nvar Fk = {};\nGe(Fk, { TEST_EPSILON_FLOAT16: () => Ak, createVideoElement: () => j4, encodeStrings: () => Dk, expectArrayBuffersEqual: () => q4, expectArraysClose: () => U4, expectArraysEqual: () => H4, expectNumbersClose: () => Rk, expectPromiseToFail: () => G4, expectValuesInRange: () => K4, play: () => X4, testEpsilon: () => bd });\nvar W4 = 1e-3;\nvar Ak = 0.1;\nfunction U4(r, e, t10) {\n return t10 == null && (t10 = bd()), xC(r, e, (o, n) => yC(o, n, t10));\n}\nfunction bd() {\n return T.backend.floatPrecision() === 32 ? W4 : Ak;\n}\nfunction xC(r, e, t10) {\n let o = true;\n if ((Bt(r) || Bt(e)) && (o = false), Bt(r) && Bt(e) && (o = true), o) {\n let a = r.constructor.name, i = e.constructor.name;\n if (a !== i)\n throw new Error(`Arrays are of different type. Actual: ${a}. Expected: ${i}`);\n }\n if (Array.isArray(r) && Array.isArray(e)) {\n let a = or(r), i = or(e);\n if (!Or(a, i))\n throw new Error(`Arrays have different shapes. Actual: [${a}]. Expected: [${i}]`);\n }\n let n = Bt(r) ? r : os(r), s = Bt(e) ? e : os(e);\n if (n.length !== s.length)\n throw new Error(`Arrays have different lengths actual: ${n.length} vs expected: ${s.length}.\nActual: ${n}.\nExpected: ${s}.`);\n for (let a = 0; a < s.length; ++a) {\n let i = n[a], p = s[a];\n if (!t10(i, p))\n throw new Error(`Arrays differ: actual[${a}] = ${i}, expected[${a}] = ${p}.\nActual: ${n}.\nExpected: ${s}.`);\n }\n typeof expect != \"undefined\" && expect().nothing();\n}\nfunction G4(r, e) {\n r().then(() => e.fail(), () => e()), typeof expect != \"undefined\" && expect().nothing();\n}\nfunction H4(r, e) {\n let t10 = typeof e == \"string\" || typeof e == \"number\" || typeof e == \"boolean\" ? [e] : e;\n return Oo(r) || Oo(r[0]) || Oo(e) || Oo(e[0]) ? xC(r, t10, (o, n) => o == n) : xC(r, e, (o, n) => yC(o, n, 0));\n}\nfunction Rk(r, e, t10) {\n if (t10 == null && (t10 = bd()), !yC(r, e, t10))\n throw new Error(`Numbers differ: actual === ${r}, expected === ${e}`);\n typeof expect != \"undefined\" && expect().nothing();\n}\nfunction yC(r, e, t10) {\n return !isFinite(r) && !isFinite(e) ? true : !(isNaN(r) || isNaN(e) || Math.abs(r - e) > t10);\n}\nfunction K4(r, e, t10) {\n for (let o = 0; o < r.length; o++)\n if (r[o] < e || r[o] > t10)\n throw new Error(`Value out of range:${r[o]} low: ${e}, high: ${t10}`);\n}\nfunction q4(r, e) {\n let t10 = new Float32Array(r), o = new Float32Array(e);\n if (t10.length !== o.length)\n throw new Error(`Expected ArrayBuffer to be of length ${o.length}, but it was ${t10.length}`);\n for (let n = 0; n < o.length; n++)\n if (t10[n] !== o[n])\n throw new Error(`Expected ArrayBuffer value at ${n} to be ${o[n]} but got ${t10[n]} instead`);\n}\nfunction Dk(r) {\n for (let e = 0; e < r.length; e++) {\n let t10 = r[e];\n Array.isArray(t10) ? Dk(t10) : r[e] = Ii(t10);\n }\n return r;\n}\nfunction j4(r) {\n let e = document.createElement(\"video\");\n return \"playsInline\" in e && (e.playsInline = true), e.muted = true, e.loop = true, e.style.position = \"fixed\", e.style.left = \"0px\", e.style.top = \"0px\", e.preload = \"auto\", e.appendChild(r), new Promise((t10) => {\n e.addEventListener(\"loadeddata\", (o) => t10(e)), e.load();\n });\n}\nasync function X4(r) {\n await r.play(), \"requestVideoFrameCallback\" in r && await new Promise((e) => {\n r.requestVideoFrameCallback(e);\n });\n}\nvar mu = class {\n constructor(e, t10, o, n, s) {\n this.mean = e, this.stdDev = t10, this.dtype = o, this.nextVal = NaN, this.truncated = n, this.truncated && (this.upper = this.mean + this.stdDev * 2, this.lower = this.mean - this.stdDev * 2);\n let a = s || Math.random();\n this.random = wd.alea(a.toString());\n }\n nextValue() {\n if (!isNaN(this.nextVal)) {\n let n = this.nextVal;\n return this.nextVal = NaN, n;\n }\n let e, t10, o = false;\n for (; !o; ) {\n let n, s, a;\n do\n n = 2 * this.random() - 1, s = 2 * this.random() - 1, a = n * n + s * s;\n while (a >= 1 || a === 0);\n let i = Math.sqrt(-2 * Math.log(a) / a);\n e = this.mean + this.stdDev * n * i, t10 = this.mean + this.stdDev * s * i, (!this.truncated || this.isValidTruncated(e)) && (o = true);\n }\n return (!this.truncated || this.isValidTruncated(t10)) && (this.nextVal = this.convertValue(t10)), this.convertValue(e);\n }\n convertValue(e) {\n return this.dtype == null || this.dtype === \"float32\" ? e : Math.round(e);\n }\n isValidTruncated(e) {\n return e <= this.upper && e >= this.lower;\n }\n};\nvar Cd = class {\n constructor(e, t10, o, n) {\n this.alpha = e, this.beta = 1 / t10, this.dtype = o;\n let s = n || Math.random();\n this.randu = wd.alea(s.toString()), this.randn = new mu(0, 1, o, false, this.randu()), e < 1 ? this.d = e + 2 / 3 : this.d = e - 1 / 3, this.c = 1 / Math.sqrt(9 * this.d);\n }\n nextValue() {\n let e, t10, o, n, s, a;\n for (; ; ) {\n do\n n = this.randn.nextValue(), a = 1 + this.c * n;\n while (a <= 0);\n if (a *= a * a, e = n * n, t10 = 1 - 0.331 * e * e, o = 0.5 * e + this.d * (1 - a + Math.log(a)), s = this.randu(), s < t10 || Math.log(s) < o)\n break;\n }\n return a = 1 / this.beta * this.d * a, this.alpha < 1 && (a *= Math.pow(this.randu(), 1 / this.alpha)), this.convertValue(a);\n }\n convertValue(e) {\n return this.dtype === \"float32\" ? e : Math.round(e);\n }\n};\nvar Sd = class {\n constructor(e = 0, t10 = 1, o, n) {\n if (this.canReturnFloat = () => this.dtype == null || this.dtype === \"float32\", this.min = e, this.range = t10 - e, this.dtype = o, n == null && (n = Math.random()), typeof n == \"number\" && (n = n.toString()), !this.canReturnFloat() && this.range <= 1)\n throw new Error(`The difference between ${e} - ${t10} <= 1 and dtype is not float`);\n this.random = wd.alea(n);\n }\n convertValue(e) {\n return this.canReturnFloat() ? e : Math.round(e);\n }\n nextValue() {\n return this.convertValue(this.min + this.range * this.random());\n }\n};\nfunction Y4(r, e, t10 = 1, o = \"float32\", n) {\n if (bt(r), t10 == null && (t10 = 1), o == null && (o = \"float32\"), o !== \"float32\" && o !== \"int32\")\n throw new Error(`Unsupported data type ${o}`);\n let s = new Cd(e, t10, o, n), a = le(r, o);\n for (let i = 0; i < a.values.length; i++)\n a.values[i] = s.nextValue();\n return a.toTensor();\n}\nvar Ok = N({ randomGamma_: Y4 });\nfunction Q4(r, e = 0, t10 = 1, o, n) {\n if (bt(r), o != null && o === \"bool\")\n throw new Error(`Unsupported data type ${o}`);\n let s = new mu(e, t10, o, false, n), a = le(r, o);\n for (let i = 0; i < a.values.length; i++)\n a.values[i] = s.nextValue();\n return a.toTensor();\n}\nvar Id = N({ randomNormal_: Q4 });\nfunction Z4(r, e, t10) {\n if (e != null && e === \"bool\")\n throw new Error(`Unsupported data type ${e}`);\n return Id(r, 0, 1, e, t10);\n}\nvar Pk = N({ randomStandardNormal_: Z4 });\nfunction J4(r, e = 0, t10 = 1, o = \"float32\", n) {\n bt(r);\n let s = le(r, o), a = new Sd(e, t10, null, n);\n for (let i = 0; i < s.values.length; i++)\n s.values[i] = a.nextValue();\n return s.toTensor();\n}\nvar vd = N({ randomUniform_: J4 });\nfunction Di(r, e, t10 = 1, o = \"float32\") {\n if (t10 === 0)\n throw new Error(\"Cannot have a step of zero\");\n let n = { start: r, stop: e, step: t10, dtype: o };\n return T.runKernel(Ts, {}, n);\n}\nfunction eG(r) {\n let t10 = { input: v(r, \"input\", \"real\") };\n return T.runKernel(di, t10);\n}\nvar Fa = N({ real_: eG });\nfunction tG(r) {\n let t10 = { x: v(r, \"x\", \"reciprocal\") };\n return T.runKernel(Fn, t10);\n}\nvar Mk = N({ reciprocal_: tG });\nfunction rG(r) {\n let t10 = { x: v(r, \"x\", \"relu\") };\n return T.runKernel(On, t10);\n}\nvar Fi = N({ relu_: rG });\nfunction oG(r) {\n let t10 = { x: v(r, \"x\", \"relu6\") };\n return T.runKernel(Ln, t10);\n}\nvar kd = N({ relu6_: oG });\nfunction nG(r, e) {\n let o = { x: v(r, \"x\", \"reverse\") }, n = { dims: e };\n return T.runKernel(Bn, o, n);\n}\nvar no = N({ reverse_: nG });\nfunction sG(r) {\n let e = v(r, \"x\", \"reverse\");\n return $(e.rank === 1, () => `Error in reverse1D: x must be rank 1 but got rank ${e.rank}.`), no(e, 0);\n}\nvar Lk = N({ reverse1d_: sG });\nfunction aG(r, e) {\n let t10 = v(r, \"x\", \"reverse\");\n return $(t10.rank === 2, () => `Error in reverse2D: x must be rank 2 but got rank ${t10.rank}.`), no(t10, e);\n}\nvar Bk = N({ reverse2d_: aG });\nfunction iG(r, e) {\n let t10 = v(r, \"x\", \"reverse\");\n return $(t10.rank === 3, () => `Error in reverse3D: x must be rank 3 but got rank ${t10.rank}.`), no(t10, e);\n}\nvar Vk = N({ reverse3d_: iG });\nfunction uG(r, e) {\n let t10 = v(r, \"x\", \"reverse\");\n return $(t10.rank === 4, () => `Error in reverse4D: x must be rank 4 but got rank ${t10.rank}.`), no(t10, e);\n}\nvar zk = N({ reverse4d_: uG });\nfunction pG(r) {\n let t10 = { x: v(r, \"x\", \"round\") };\n return T.runKernel(Vn, t10);\n}\nvar Nd = N({ round_: pG });\nfunction cG(r) {\n let t10 = { x: v(r, \"x\", \"rsqrt\", \"float32\") };\n return T.runKernel(zn, t10);\n}\nvar Wk = N({ rsqrt_: cG });\nfunction lG(r) {\n let t10 = { x: v(r, \"x\", \"selu\") };\n return T.runKernel(Ca, t10);\n}\nvar Uk = N({ selu_: lG });\nfunction mG(r, e, t10, o, n, s = [1, 1], a = \"NHWC\") {\n let i = v(r, \"x\", \"separableConv2d\"), p = v(e, \"depthwiseFilter\", \"separableConv2d\"), u = v(t10, \"pointwiseFilter\", \"separableConv2d\"), c = i, l = false;\n if (i.rank === 3 && (l = true, c = W(i, [1, i.shape[0], i.shape[1], i.shape[2]])), a === \"NCHW\")\n throw new Error(\"separableConv2d currently does not support dataFormat NCHW; only NHWC is supported\");\n $(c.rank === 4, () => `Error in separableConv2d: input must be rank 4, but got rank ${c.rank}.`), $(p.rank === 4, () => `Error in separableConv2d: depthwise filter must be rank 4, but got rank ${p.rank}.`), $(u.rank === 4, () => `Error in separableConv2d: pointwise filter must be rank 4, but got rank ${p.rank}.`), $(u.shape[0] === 1, () => `Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${u.shape[0]}.`), $(u.shape[1] === 1, () => `Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${u.shape[1]}.`);\n let m = p.shape[2], d = p.shape[3];\n $(u.shape[2] === m * d, () => `Error in separableConv2d: the third dimension of pointwise filter must be ${m * d}, but got ${u.shape[2]}.`);\n let f = Bp(c, p, o, n, a, s), g = Ei(f, u, 1, \"valid\", a);\n return l ? W(g, [g.shape[1], g.shape[2], g.shape[3]]) : g;\n}\nvar Gk = N({ separableConv2d_: mG });\nasync function dG(r, e) {\n let t10 = v(r, \"x\", \"setdiff1d\"), o = v(e, \"y\", \"setdiff1d\");\n $(t10.dtype === o.dtype, () => `x and y should have the same dtype, but got x (${t10.dtype}) and y (${o.dtype}).`), $(t10.rank === 1, () => `x should be 1D tensor, but got x (${t10.shape}).`), $(o.rank === 1, () => `y should be 1D tensor, but got y (${o.shape}).`);\n let n = await t10.data(), s = await o.data(), a = new Set(s), i = 0;\n for (let c = 0; c < n.length; c++)\n a.has(n[c]) || i++;\n let p = new st([i], t10.dtype), u = new st([i], \"int32\");\n for (let c = 0, l = 0; c < n.length; c++)\n a.has(n[c]) || (p.values[l] = n[c], u.values[l] = c, l++);\n return [p.toTensor(), u.toTensor()];\n}\nvar Hk = dG;\nfunction fG(r) {\n let t10 = { x: v(r, \"x\", \"sign\") };\n return T.runKernel(wa, t10);\n}\nvar Kk = N({ sign_: fG });\nfunction hG(r) {\n let t10 = { x: v(r, \"x\", \"sin\", \"float32\") };\n return T.runKernel(Un, t10);\n}\nvar qk = N({ sin_: hG });\nfunction gG(r) {\n let t10 = { x: v(r, \"x\", \"sinh\") };\n return T.runKernel(Sa, t10);\n}\nvar jk = N({ sinh_: gG });\nfunction xG(r, e, t10) {\n let o = v(r, \"x\", \"slice1d\");\n return $(o.rank === 1, () => `slice1d expects a rank-1 tensor, but got a rank-${o.rank} tensor`), Ke(o, [e], [t10]);\n}\nvar Xk = N({ slice1d_: xG });\nfunction yG(r, e, t10) {\n let o = v(r, \"x\", \"slice2d\");\n return $(o.rank === 2, () => `slice2d expects a rank-2 tensor, but got a rank-${o.rank} tensor`), Ke(o, e, t10);\n}\nvar Yk = N({ slice2d_: yG });\nfunction bG(r, e, t10) {\n let o = v(r, \"x\", \"slice3d\");\n return $(o.rank === 3, () => `slice3d expects a rank-3 tensor, but got a rank-${o.rank} tensor`), Ke(o, e, t10);\n}\nvar Qk = N({ slice3d_: bG });\nfunction CG(r, e, t10) {\n let o = v(r, \"x\", \"slice4d\");\n return $(o.rank === 4, () => `slice4d expects a rank-4 tensor, but got a rank-${o.rank} tensor`), Ke(o, e, t10);\n}\nvar Zk = N({ slice4d_: CG });\nfunction SG(r, e = -1) {\n let t10 = v(r, \"logits\", \"softmax\", \"float32\");\n if (e === -1 && (e = t10.rank - 1), e !== t10.rank - 1)\n throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${t10.rank} and dim was ${e}`);\n let o = { logits: t10 }, n = { dim: e };\n return T.runKernel(qn, o, n);\n}\nvar Jk = N({ softmax_: SG });\nfunction wG(r) {\n $(r.dtype === \"complex64\", () => `The dtype for tf.spectral.fft() must be complex64 but got ${r.dtype}.`);\n let e = { input: r };\n return T.runKernel(ui, e);\n}\nvar zp = N({ fft_: wG });\nfunction IG(r) {\n $(r.dtype === \"complex64\", () => `The dtype for tf.spectral.ifft() must be complex64 but got ${r.dtype}.`);\n let e = { input: r };\n return T.runKernel(pi, e);\n}\nvar du = N({ ifft_: IG });\nfunction vG(r) {\n let e = r.shape[r.shape.length - 1], t10 = r.size / e, o;\n if (e <= 2) {\n let n = W(r, [t10, e]);\n o = du(n);\n } else {\n let n = [t10, 2 * (e - 1)], s = W(Fa(r), [t10, e]), a = W(Ri(r), [t10, e]), i = no(Ke(s, [0, 1], [t10, e - 2]), 1), p = ne(no(Ke(a, [0, 1], [t10, e - 2]), 1), Ce(-1)), u = xt([s, i], 1), c = xt([a, p], 1), l = W(Tr(u, c), [n[0], n[1]]);\n o = du(l);\n }\n if (o = Fa(o), r.rank === 3 && r.shape[0] !== 0) {\n let n = o, s = r.shape[0];\n o = W(o, [s, o.shape[0] / s, o.shape[1]]), n.dispose();\n }\n return o;\n}\nvar Td = N({ irfft_: vG });\nfunction kG(r, e, t10 = 0) {\n let n = { x: v(r, \"x\", \"split\") }, s = { numOrSizeSplits: e, axis: t10 };\n return T.runKernel(Rs, n, s);\n}\nvar Oa = N({ split_: kG });\nfunction NG(r, e) {\n $(r.dtype === \"float32\", () => `The dtype for rfft() must be real value but got ${r.dtype}`);\n let t10 = r.shape[r.shape.length - 1], o = r.size / t10, n;\n if (e != null && e < t10) {\n let f = r.shape.map((g) => 0), h = r.shape.map((g) => g);\n h[r.shape.length - 1] = e, n = Ke(r, f, h), t10 = e;\n } else if (e != null && e > t10) {\n let f = r.shape.map((h) => h);\n f[r.shape.length - 1] = e - t10, n = xt([r, Br(f)], r.shape.length - 1), t10 = e;\n } else\n n = r;\n let s = Ut(n), a = W(Tr(n, s), [o, t10]), i = zp(a), p = Math.floor(t10 / 2) + 1, u = Fa(i), c = Ri(i), l = Oa(u, [p, t10 - p], u.shape.length - 1), m = Oa(c, [p, t10 - p], c.shape.length - 1), d = n.shape.slice();\n return d[n.shape.length - 1] = p, W(Tr(l[0], m[0]), d);\n}\nvar Wp = N({ rfft_: NG });\nfunction TG(r, e) {\n let t10 = v(r, \"a\", \"squaredDifference\"), o = v(e, \"b\", \"squaredDifference\");\n [t10, o] = De(t10, o), Je(t10.shape, o.shape);\n let n = { a: t10, b: o }, s = {};\n return T.runKernel(jn, n, s);\n}\nvar _d = N({ squaredDifference_: TG });\nfunction _G(r, e) {\n let t10 = v(r, \"x\", \"squeeze\", \"string_or_numeric\");\n return W(t10, bb(t10.shape, e).newShape);\n}\nvar Up = N({ squeeze_: _G });\nfunction $G(r, e = 0) {\n let t10 = _a(r, \"tensors\", \"stack\", \"string_or_numeric\");\n $(t10.length >= 1, () => \"Pass at least one tensor to tf.stack\"), t10.length > 0 && $(e <= t10[0].rank, () => \"Axis must be <= rank of the tensor\");\n let o = t10, n = { axis: e };\n return T.runKernel(Ns, o, n);\n}\nvar Sr = N({ stack_: $G });\nfunction EG(r, e = 0) {\n let o = { x: v(r, \"x\", \"step\") }, n = { alpha: e };\n return T.runKernel(fo, o, n);\n}\nvar $d = N({ step_: EG });\nfunction AG(r, e, t10, o, n = 0, s = 0, a = 0, i = 0, p = 0) {\n let c = { x: v(r, \"x\", \"stridedSlice\", \"string_or_numeric\") }, l = { begin: e, end: t10, strides: o, beginMask: n, endMask: s, ellipsisMask: a, newAxisMask: i, shrinkAxisMask: p };\n return T.runKernel(Xn, c, l);\n}\nvar e1 = N({ stridedSlice_: AG });\nfunction RG(r) {\n let t10 = { x: v(r, \"x\", \"tan\", \"float32\") };\n return T.runKernel(Qn, t10);\n}\nvar t1 = N({ tan_: RG });\nfunction dr(r, e) {\n Jr(r);\n let t10 = or(r, e);\n if (t10.length !== 1)\n throw new Error(\"tensor1d() requires values to be a flat/TypedArray\");\n return xr(r, null, t10, e);\n}\nfunction Oi(r, e, t10) {\n if (Jr(r), e != null && e.length !== 2)\n throw new Error(\"tensor2d() requires shape to have two numbers\");\n let o = or(r, t10);\n if (o.length !== 2 && o.length !== 1)\n throw new Error(\"tensor2d() requires values to be number[][] or flat/TypedArray\");\n if (o.length === 1 && e == null)\n throw new Error(\"tensor2d() requires shape to be provided when `values` are a flat/TypedArray\");\n return xr(r, e, o, t10);\n}\nfunction Ed(r, e, t10) {\n if (Jr(r), e != null && e.length !== 3)\n throw new Error(\"tensor3d() requires shape to have three numbers\");\n let o = or(r, t10);\n if (o.length !== 3 && o.length !== 1)\n throw new Error(\"tensor3d() requires values to be number[][][] or flat/TypedArray\");\n if (o.length === 1 && e == null)\n throw new Error(\"tensor3d() requires shape to be provided when `values` are a flat array\");\n return xr(r, e, o, t10);\n}\nfunction r1(r, e, t10) {\n if (Jr(r), e != null && e.length !== 4)\n throw new Error(\"tensor4d() requires shape to have four numbers\");\n let o = or(r, t10);\n if (o.length !== 4 && o.length !== 1)\n throw new Error(\"tensor4d() requires values to be number[][][][] or flat/TypedArray\");\n if (o.length === 1 && e == null)\n throw new Error(\"tensor4d() requires shape to be provided when `values` are a flat array\");\n return xr(r, e, o, t10);\n}\nfunction o1(r, e, t10) {\n if (Jr(r), e != null && e.length !== 5)\n throw new Error(\"tensor5d() requires shape to have five numbers\");\n let o = or(r, t10);\n if (o.length !== 5 && o.length !== 1)\n throw new Error(\"tensor5d() requires values to be number[][][][][] or flat/TypedArray\");\n if (o.length === 1 && e == null)\n throw new Error(\"tensor5d() requires shape to be provided when `values` are a flat array\");\n return xr(r, e, o, t10);\n}\nfunction n1(r, e, t10) {\n if (Jr(r), e != null && e.length !== 6)\n throw new Error(\"tensor6d() requires shape to have six numbers\");\n let o = or(r, t10);\n if (o.length !== 6 && o.length !== 1)\n throw new Error(\"tensor6d() requires values to be number[][][][][][] or flat/TypedArray\");\n if (o.length === 1 && e == null)\n throw new Error(\"tensor6d() requires shape to be provided when `values` are a flat array\");\n return e = e || o, xr(r, e, o, t10);\n}\nfunction DG(r, e = 1, t10 = true) {\n let o = v(r, \"x\", \"topk\");\n if (o.rank === 0)\n throw new Error(\"topk() expects the input to be of rank 1 or higher\");\n let n = o.shape[o.shape.length - 1];\n if (e < 0)\n throw new Error(`'k' passed to topk() must be >= 0 but got ${e}`);\n if (e > n)\n throw new Error(`'k' passed to topk() must be <= the last dimension (${n}) but got ${e}`);\n let s = { x: o }, a = { k: e, sorted: t10 }, [i, p] = T.runKernel(Jn, s, a);\n return { values: i, indices: p };\n}\nvar s1 = N({ topk_: DG });\nfunction FG(r, e = 0, t10 = 1, o, n) {\n if (bt(r), o != null && o === \"bool\")\n throw new Error(\"Unsupported data type $ { dtype }\");\n let s = new mu(e, t10, o, true, n), a = le(r, o);\n for (let i = 0; i < a.values.length; i++)\n a.values[i] = s.nextValue();\n return a.toTensor();\n}\nvar a1 = N({ truncatedNormal_: FG });\nfunction OG(r, e = 0) {\n let t10 = v(r, \"x\", \"unique\", \"string_or_numeric\");\n $(t10.rank > 0, () => \"The input tensor must be at least 1D\");\n let o = { x: t10 }, n = { axis: e }, [s, a] = T.runKernel(Np, o, n);\n return { values: s, indices: a };\n}\nvar i1 = N({ unique_: OG });\nfunction PG(r, e, t10) {\n let o = v(r, \"x\", \"unsortedSegmentSum\"), n = v(e, \"segmentIds\", \"unsortedSegmentSum\", \"int32\");\n $(sa(t10), () => \"numSegments must be of dtype int\");\n let s = { x: o, segmentIds: n }, a = { numSegments: t10 };\n return T.runKernel(Tp, s, a);\n}\nvar u1 = N({ unsortedSegmentSum_: PG });\nfunction MG(r, e = 0) {\n let t10 = v(r, \"x\", \"unstack\", \"string_or_numeric\");\n $(e >= -t10.shape.length && e < t10.shape.length, () => `Axis = ${e} is not in [-${t10.shape.length}, ${t10.shape.length})`);\n let o = { value: t10 }, n = { axis: e };\n return T.runKernel(Fs, o, n);\n}\nvar so = N({ unstack_: MG });\nfunction p1(r, e) {\n return ol(r, e, \"right\");\n}\nfunction c1(r, e = true, t10, o) {\n return T.makeVariable(r, e, t10, o);\n}\nfunction Ad(r, e) {\n let t10 = [];\n for (let s = 0; s < e.length; s++)\n e[s] && t10.push(s);\n let o = le(r, \"int32\"), n = le([t10.length, r.length], \"int32\");\n for (let s = 0; s < t10.length; s++) {\n let a = o.indexToLoc(t10[s]), i = s * r.length;\n n.values.set(a, i);\n }\n return n.toTensor();\n}\nasync function LG(r) {\n let e = v(r, \"condition\", \"whereAsync\", \"bool\"), t10 = await e.data(), o = Ad(e.shape, t10);\n return r !== e && e.dispose(), o;\n}\nvar Rd = LG;\nasync function BG(r, e, t10) {\n let o = v(r, \"tensor\", \"boolMask\"), n = v(e, \"mask\", \"boolMask\", \"bool\"), s = t10 == null ? 0 : t10, a = n.rank, i = o.shape;\n $(a > 0, () => \"mask cannot be scalar\"), gt(i.slice(s, s + a), n.shape, \"mask's shape must match the first K dimensions of tensor's shape,\");\n let p = 1;\n for (let h = s; h < s + a; h++)\n p *= i[h];\n let u = i.slice(0, s).concat([p], i.slice(s + a)), c = W(o, u), l = W(n, [-1]), m = await Rd(l), d = Up(m, [1]), f = rd(c, d, s);\n return r !== o && o.dispose(), e !== n && n.dispose(), d.dispose(), c.dispose(), l.dispose(), m.dispose(), f;\n}\nvar VG = BG;\nfunction zG(r, e, t10) {\n let o = v(r, \"x\", \"transpose\");\n if (e == null && (e = o.shape.map((a, i) => i).reverse()), $(o.rank === e.length, () => `Error in transpose: rank of input ${o.rank} must match length of perm ${e}.`), e.forEach((a) => {\n $(a >= 0 && a < o.rank, () => `All entries in 'perm' must be between 0 and ${o.rank - 1} but got ${e}`);\n }), o.rank <= 1)\n return o.clone();\n let n = { x: o }, s = { perm: e };\n return o.dtype === \"complex64\" ? Ee(() => {\n let a = Fa(o), i = Ri(o);\n return a = T.runKernel(ro, { x: a }, s), i = T.runKernel(ro, { x: i }, s), t10 && (i = Cr(i)), Tr(a, i);\n }) : T.runKernel(ro, n, s);\n}\nvar Gp = N({ transpose_: zG });\nfunction WG(r, e, t10, o, n = true) {\n let s = v(r, \"v\", \"movingAverage\"), a = v(e, \"x\", \"movingAverage\"), i = v(t10, \"decay\", \"movingAverage\");\n Ub(s, a), $(Or(s.shape, a.shape), () => \"Shape mismatch in v and x\");\n let p = Ce(1), u = ke(p, i), c = ne(ke(a, s), u);\n if (n) {\n $(o != null, () => \"When using zeroDebias: true, step is required.\");\n let l = v(o, \"step\", \"movingAverage\");\n c = He(c, ke(p, Aa(i, l)));\n }\n return be(s, c);\n}\nvar UG = N({ movingAverage_: WG });\nvar sl = {};\nGe(sl, { calculateShapes: () => l1, validateInput: () => Dd, validateUpdateShape: () => bC });\nfunction bC(r, e, t10) {\n let o = e.rank > 1 ? e.shape[e.rank - 1] : 1, n = e.rank > 1 ? e.rank - 1 : 1, s = `Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${t10.shape}, indices.shape: ${e.shape}, shape: ${r}, sliceDim: ${o}, and batchDim: ${n}.`;\n if (t10.rank < n)\n throw new Error(s + ` update.rank < ${n}. `);\n if (r.length < o + (t10.rank - n))\n throw new Error(s + ` Output shape length < ${o + (t10.rank - n)}`);\n if (t10.rank !== n + r.length - o)\n throw new Error(s + ` update.rank != ${n + r.length - o}`);\n for (let a = 0; a < n; ++a)\n if (t10.shape[a] !== e.shape[a])\n throw new Error(s + ` updates.shape[${a}] (${t10.shape[a]}) != indices.shape[${a}] (${e.shape[a]}).`);\n for (let a = 0; a < t10.rank - n; ++a)\n if (t10.shape[a + n] !== r[a + o])\n throw new Error(s + ` updates.shape[${a + n}] (${t10.shape[a + n]}) != shape[${a + n}] (${r[a + n]})`);\n}\nfunction Dd(r, e, t10) {\n if (e.rank < 1)\n throw new Error(`tf.scatterND() expects the indices to be rank 1 or higher, but the rank was ${e.rank}.`);\n if (r.rank < 1)\n throw new Error(`tf.scatterND() expects the updates to be rank 1 or higher, but the rank was ${r.rank}.`);\n if (e.dtype !== \"int32\")\n throw new Error(`The dtype of 'indices' should be int32, but got dtype: ${e.dtype}`);\n if (t10.length < 1)\n throw new Error(`Output rank must be greater or equal to 1, but got shape: ${t10}`);\n if (t10.length === 0) {\n if (e.size === 0)\n throw new Error(`Indices specified for empty output. indices shape: ${e.shape}`);\n if (r.size === 0)\n throw new Error(`Updates specified for empty output. updates shape: ${r.shape}`);\n }\n bC(t10, e, r);\n}\nfunction l1(r, e, t10) {\n let o = e.shape.length, n = o > 1 ? e.shape[o - 1] : 1, s = t10.length, a = 1;\n for (let l = n; l < s; ++l)\n a *= t10[l];\n let i = n < 1 ? 1 : n, p = We(e.shape) / i, u = [...xs(t10.slice(0, n)), 1], c = We(t10);\n return { sliceRank: n, numUpdates: p, sliceSize: a, strides: u, outputSize: c };\n}\nfunction GG(r, e, t10) {\n bt(t10);\n let o = v(r, \"indices\", \"scatterND\", \"int32\"), n = v(e, \"updates\", \"scatterND\");\n Dd(n, o, t10);\n let s = { indices: o, updates: n }, a = { shape: t10 };\n return T.runKernel(Wn, s, a);\n}\nvar HG = N({ scatterND_: GG });\nfunction m1(r, e, t10, o) {\n if (r.dtype !== \"int32\")\n throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${r.dtype}.`);\n if (r.rank > 2)\n throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${r.shape}.`);\n let n = r.rank > 0 ? r.shape[0] : 1, s = r.rank > 1 ? r.shape[1] : 1;\n if (t10.length !== s)\n throw new Error(`outputShape has incorrect number of elements:, ${t10.length}, should be: ${s}.`);\n let a = e.size;\n if (!(e.rank === 0 || e.rank === 1 && a === n))\n throw new Error(`sparseValues has incorrect shape ${e.shape}, should be [] or [${n}]`);\n if (e.dtype !== o.dtype)\n throw new Error(\"sparseValues.dtype must match defaultValues.dtype\");\n}\nfunction qG(r, e, t10, o = 0) {\n bt(t10);\n let n = v(r, \"sparseIndices\", \"sparseToDense\", \"int32\"), s = v(e, \"sparseValues\", \"sparseToDense\", \"string_or_numeric\"), a = v(o, \"defaultValue\", \"sparseToDense\", s.dtype);\n m1(n, s, t10, a);\n let i = { sparseIndices: n, sparseValues: s, defaultValue: a }, p = { outputShape: t10 };\n return T.runKernel(yi, i, p);\n}\nvar jG = N({ sparseToDense_: qG });\nfunction XG(r, e) {\n let t10 = v(e, \"indices\", \"gatherND\", \"int32\"), n = { params: v(r, \"x\", \"gatherND\", \"string_or_numeric\"), indices: t10 };\n return T.runKernel(an, n);\n}\nvar YG = N({ gatherND_: XG });\nfunction d1(r, e) {\n if (e == null)\n return r.shape.slice();\n if (Or(r.shape, e))\n return e;\n if (r.shape.length === e.length) {\n let t10 = [];\n for (let o = 0; o < r.shape.length; o++)\n e[o] == null && r.shape[o] != null ? t10.push(r.shape[o]) : t10.push(e[o]);\n return t10;\n }\n return e;\n}\nfunction QG(r, e, t10, o) {\n let n = v(r, \"x\", \"dropout\");\n if ($(n.dtype === \"float32\", () => `x has to be a floating point tensor since it's going to be scaled, but got a ${n.dtype} tensor instead.`), $(e >= 0 && e < 1, () => `rate must be a float in the range [0, 1), but got ${e}.`), e === 0)\n return r instanceof it ? n.clone() : n;\n let s = d1(n, t10), a = 1 - e, i = He(td(be(vd(s, 0, 1, \"float32\", o), a)), a);\n return ne(n, i);\n}\nvar ZG = N({ dropout_: QG });\nfunction CC(r) {\n return Math.floor(Math.pow(2, Math.ceil(Math.log(r) / Math.log(2))));\n}\nfunction al(r, e, t10) {\n let o = 1 - r % 2, n = new Float32Array(r);\n for (let s = 0; s < r; ++s) {\n let a = 2 * Math.PI * s / (r + o - 1);\n n[s] = e - t10 * Math.cos(a);\n }\n return dr(n, \"float32\");\n}\nasync function JG(r, e, t10 = 1) {\n let o = v(r, \"predictions\", \"inTopK\"), n = v(e, \"targets\", \"inTopK\");\n $(o.rank > 1, () => `inTopK() expects the predictions to be of rank 2 or higher, but got ${o.rank}`), $(o.rank - 1 === n.rank, () => `predictions rank should be 1 larger than targets rank, but got predictions rank ${o.rank} and targets rank ${n.rank}`), gt(o.shape.slice(0, o.shape.length - 1), n.shape, \"predictions's shape should be align with the targets' shape, except the last dimension.\");\n let s = o.shape[o.shape.length - 1];\n $(t10 > 0 && t10 <= s, () => `'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${s}), but got ${t10}`);\n let a = await o.data(), i = await n.data(), [p, u] = [a.length / s, s], c = Cb(\"bool\", p);\n for (let l = 0; l < p; l++) {\n let m = l * u, d = a.subarray(m, m + u), f = [];\n for (let h = 0; h < d.length; h++)\n f.push({ value: d[h], index: h });\n f.sort((h, g) => g.value - h.value), c[l] = 0;\n for (let h = 0; h < t10; h++)\n if (f[h].index === i[l]) {\n c[l] = 1;\n break;\n }\n }\n return r !== o && o.dispose(), e !== n && n.dispose(), nr(c, n.shape, \"bool\");\n}\nvar eH = JG;\nvar SC = {};\nGe(SC, { conv2d: () => h1, depthwiseConv2d: () => y1, matMul: () => b1 });\nfunction tH(r, e, t10, o, n, s = \"NHWC\", a) {\n let i = r;\n r.rank === 3 && (i = W(r, [1, r.shape[0], r.shape[1], r.shape[2]]));\n let p = e;\n p.rank === 3 && (p = W(e, [1, e.shape[0], e.shape[1], e.shape[2]])), $(i.rank === 4, () => `Error in conv2dDerFilter: input must be rank 4, but got shape ${i.shape}.`), $(p.rank === 4, () => `Error in conv2dDerFilter: dy must be rank 4, but got shape ${p.shape}.`), $(t10.length === 4, () => `Error in conv2dDerFilter: filterShape must be length 4, but got ${t10}.`);\n let u = s === \"NHWC\" ? i.shape[3] : i.shape[1], c = s === \"NHWC\" ? p.shape[3] : p.shape[1];\n $(u === t10[2], () => `Error in conv2dDerFilter: depth of input ${u}) must match input depth in filter (${t10[2]}.`), $(c === t10[3], () => `Error in conv2dDerFilter: depth of dy (${c}) must match output depth for filter (${t10[3]}).`), Mt(\"conv2dDerFilter\", n, a);\n let l = { x: i, dy: p }, m = { strides: o, pad: n, dataFormat: s, dimRoundingMode: a, filterShape: t10 };\n return T.runKernel(oi, l, m);\n}\nvar f1 = N({ conv2DBackpropFilter_: tH });\nfunction fu(r, e, t10) {\n if (t10 == null || t10 === \"linear\")\n return r;\n if (t10 === \"relu\")\n return ne(r, $d(e));\n throw new Error(`Cannot compute gradient for fused activation ${t10}.`);\n}\nfunction hu(r, e) {\n let t10 = e, o = Qm(r.shape, e.shape);\n return o.length > 0 && (t10 = et(t10, o)), W(t10, r.shape);\n}\nfunction gu(r, e, t10, o) {\n if (e === \"linear\")\n return r;\n if (e === \"relu\")\n return Fi(r);\n if (e === \"elu\")\n return Jm(r);\n if (e === \"relu6\")\n return kd(r);\n if (e === \"prelu\")\n return xd(r, t10);\n if (e === \"leakyrelu\")\n return nd(r, o);\n if (e === \"sigmoid\")\n return Ws(r);\n throw new Error(`Unknown fused activation ${e}.`);\n}\nvar xu = (r, e) => !(r > 0) || e === \"linear\";\nfunction rH({ x: r, filter: e, strides: t10, pad: o, dataFormat: n = \"NHWC\", dilations: s = [1, 1], dimRoundingMode: a, bias: i, activation: p = \"linear\", preluActivationWeights: u, leakyreluAlpha: c }) {\n if (p = p || \"linear\", xu(T.state.gradientDepth, p) === false) {\n $(n === \"NHWC\", () => `Error in fused conv2d: got dataFormat of ${n} but only NHWC is currently supported for the case of gradient depth is 0 and the activation is not linear.`);\n let _ = Ei(r, e, t10, o, n, s, a);\n return i != null && (_ = be(_, i)), gu(_, p, u, c);\n }\n let l = v(r, \"x\", \"conv2d\", \"float32\"), m = v(e, \"filter\", \"conv2d\", \"float32\"), d = l, f = false;\n l.rank === 3 && (f = true, d = W(l, [1, l.shape[0], l.shape[1], l.shape[2]])), $(d.rank === 4, () => `Error in fused conv2d: input must be rank 4, but got rank ${d.rank}.`), $(m.rank === 4, () => `Error in fused conv2d: filter must be rank 4, but got rank ${m.rank}.`), Mt(\"fused conv2d\", o, a);\n let h = n === \"NHWC\" ? d.shape[3] : d.shape[1];\n $(m.shape[2] === h, () => `Error in conv2d: depth of input (${h}) must match input depth for filter ${m.shape[2]}.`), $(mr(t10, s), () => `Error in conv2D: Either strides or dilations must be 1. Got strides ${t10} and dilations '${s}'`);\n let g = au(d.shape, m.shape, t10, s, o, a), x;\n i != null && (x = v(i, \"bias\", \"fused conv2d\"), [x] = De(x, l), n === \"NHWC\" ? Je(g.outShape, x.shape) : ($(x.shape.length <= 1, () => `Error in fused conv2d: only supports scalar or 1-D Tensor bias for NCHW format but got the bias of rank-${x.shape.length}.`), $(x.shape.length === 0 || x.shape[0] === g.outChannels || x.shape[0] === 1, () => `Error in fused conv2d: bias shape (${x.shape}) is not compatible with the number of output channels (${g.outChannels})`)));\n let b;\n if (u != null) {\n let _ = u.shape;\n if ($(_.length <= 1 || _.length === 3, () => `Error in fused conv2d: only supports scalar, 1-D Tensor or 3-D Tensor PReLU activation weights but got a tensor of rank-${_.length}.`), _.length === 1)\n $(_[0] === 1 || _[0] === g.outChannels, () => `Error in fused conv2d: PReLU activation weights (${_}) is not compatible with the number of output channels (${g.outChannels}).`);\n else if (_.length === 3)\n try {\n Je(_, g.outShape);\n } catch (E) {\n let A = `Error in fused conv2d: PReLU activation weights (${_}) is not compatible with the output shape of the conv2d (${g.outShape}).`;\n throw Error(A);\n }\n b = v(u, \"prelu weights\", \"fused conv2d\");\n }\n let C = (_, E) => {\n $(n === \"NHWC\", () => `Error in gradient of fused conv2D: got dataFormat of ${n} but only NHWC is currently supported.`);\n let [A, R, D, P] = E, M = fu(_, D, p);\n $(su(s), () => `Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${s}'`);\n let L = Ym(R.shape, M, A, t10, o), V = f1(R, M, A.shape, t10, o), z = [L, V];\n if (P != null) {\n let U = hu(P, M);\n z.push(U);\n }\n return z;\n }, w = { x: d, filter: m, bias: x, preluActivationWeights: b }, k = { strides: t10, pad: o, dataFormat: n, dilations: s, dimRoundingMode: a, activation: p, leakyreluAlpha: c };\n return i == null ? br((E, A, R) => {\n let D = T.runKernel(go, w, k);\n return R([A, E, D]), f && (D = W(D, [D.shape[1], D.shape[2], D.shape[3]])), { value: D, gradFunc: C };\n })(d, m) : br((E, A, R, D) => {\n let P = T.runKernel(go, w, k);\n return D([A, E, P, R]), f && (P = W(P, [P.shape[1], P.shape[2], P.shape[3]])), { value: P, gradFunc: C };\n })(d, m, x);\n}\nvar h1 = N({ fusedConv2d_: rH });\nfunction oH(r, e, t10, o, n, s = [1, 1], a) {\n let i = r;\n r.rank === 3 && (i = W(r, [1, r.shape[0], r.shape[1], r.shape[2]]));\n let p = e;\n p.rank === 3 && (p = W(e, [1, e.shape[0], e.shape[1], e.shape[2]]));\n let u = { x: i, dy: p }, c = { strides: o, pad: n, dimRoundingMode: a, dilations: s, filterShape: t10 };\n return T.runKernel(yp, u, c);\n}\nvar g1 = N({ depthwiseConv2dNativeBackpropFilter_: oH });\nfunction nH(r, e, t10, o, n, s = [1, 1], a) {\n let i = e, p = false;\n e.rank === 3 && (p = true, i = W(e, [1, e.shape[0], e.shape[1], e.shape[2]]));\n let u = { dy: i, filter: t10 }, c = { strides: o, pad: n, dimRoundingMode: a, dilations: s, inputShape: r }, l = T.runKernel(bp, u, c);\n return p ? W(l, [l.shape[1], l.shape[2], l.shape[3]]) : l;\n}\nvar x1 = N({ depthwiseConv2dNativeBackpropInput_: nH });\nfunction sH({ x: r, filter: e, strides: t10, pad: o, dataFormat: n = \"NHWC\", dilations: s = [1, 1], dimRoundingMode: a, bias: i, activation: p = \"linear\", preluActivationWeights: u, leakyreluAlpha: c }) {\n if (xu(T.state.gradientDepth, p) === false) {\n let k = Bp(r, e, t10, o, n, s, a);\n return i != null && (k = be(k, i)), gu(k, p, u, c);\n }\n let l = v(r, \"x\", \"depthwiseConv2d\", \"float32\"), m = v(e, \"filter\", \"depthwiseConv2d\", \"float32\"), d = l, f = false;\n l.rank === 3 && (f = true, d = W(l, [1, l.shape[0], l.shape[1], l.shape[2]])), $(d.rank === 4, () => `Error in fused depthwiseConv2d: input must be rank 4, but got rank ${d.rank}.`), $(m.rank === 4, () => `Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${m.rank}.`), $(d.shape[3] === m.shape[2], () => `Error in fused depthwiseConv2d: number of input channels (${d.shape[3]}) must match the inChannels dimension in filter ${m.shape[2]}.`), s == null && (s = [1, 1]), $(mr(t10, s), () => `Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${t10} and dilations '${s}'`), Mt(\"fused depthwiseConv2d\", o, a);\n let h = au(d.shape, m.shape, t10, s, o, a, true), g;\n i != null && (g = v(i, \"bias\", \"fused conv2d\"), [g] = De(g, l), Je(h.outShape, g.shape));\n let x;\n u != null && (x = v(u, \"prelu weights\", \"fused depthwiseConv2d\"));\n let b = (k, _) => {\n $(su(s), () => `Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${s}'`);\n let [E, A, R, D] = _, P = fu(k, R, p), M = x1(A.shape, P, E, t10, o, s, a), L = g1(A, P, E.shape, t10, o, s, a);\n if (D != null) {\n let V = hu(g, P);\n return [M, L, V];\n }\n return [M, L];\n }, C = { x: d, filter: m, bias: g, preluActivationWeights: x }, w = { strides: t10, pad: o, dataFormat: n, dilations: s, dimRoundingMode: a, activation: p, leakyreluAlpha: c };\n return i == null ? br((_, E, A) => {\n let R = T.runKernel(xo, C, w);\n return A([E, _, R]), f && (R = W(R, [R.shape[1], R.shape[2], R.shape[3]])), { value: R, gradFunc: b };\n })(d, m) : br((_, E, A, R) => {\n let D = T.runKernel(xo, C, w);\n return R([E, _, D, A]), f && (D = W(D, [D.shape[1], D.shape[2], D.shape[3]])), { value: D, gradFunc: b };\n })(d, m, g);\n}\nvar y1 = N({ fusedDepthwiseConv2d_: sH });\nfunction aH({ a: r, b: e, transposeA: t10 = false, transposeB: o = false, bias: n, activation: s = \"linear\", preluActivationWeights: a, leakyreluAlpha: i = 0.2 }) {\n if (xu(T.state.gradientDepth, s) === false) {\n let P = Xe(r, e, t10, o);\n return n != null && (P = be(P, n)), gu(P, s, a, i);\n }\n let p = v(r, \"a\", \"fused matMul\"), u = v(e, \"b\", \"fused matMul\");\n [p, u] = De(p, u);\n let c = t10 ? p.shape[p.rank - 2] : p.shape[p.rank - 1], l = o ? u.shape[u.rank - 1] : u.shape[u.rank - 2], m = t10 ? p.shape[p.rank - 1] : p.shape[p.rank - 2], d = o ? u.shape[u.rank - 2] : u.shape[u.rank - 1], f = p.shape.slice(0, -2), h = u.shape.slice(0, -2), g = We(f), x = We(h);\n $(c === l, () => `Error in fused matMul: inner shapes (${c}) and (${l}) of Tensors with shapes ${p.shape} and ${u.shape} and transposeA=${t10} and transposeB=${o} must match.`);\n let C = Je(p.shape.slice(0, -2), u.shape.slice(0, -2)).concat([m, d]), w = t10 ? W(p, [g, c, m]) : W(p, [g, m, c]), k = o ? W(u, [x, d, l]) : W(u, [x, l, d]), _;\n n != null && (_ = v(n, \"bias\", \"fused matMul\"), [_] = De(_, p), Je(C, _.shape));\n let E;\n a != null && (E = v(a, \"prelu weights\", \"fused matMul\"));\n let A = (P, M) => {\n let [L, V, z, U] = M, K = fu(W(P, z.shape), z, s), H, q;\n if (!t10 && !o ? (H = Xe(K, V, false, true), q = Xe(L, K, true, false)) : !t10 && o ? (H = Xe(K, V, false, false), q = Xe(K, L, true, false)) : t10 && !o ? (H = Xe(V, K, false, true), q = Xe(L, K, false, false)) : (H = Xe(V, K, true, true), q = Xe(K, L, true, true)), n != null) {\n let Z = hu(U, K);\n return [H, q, Z];\n } else\n return [H, q];\n }, R = { a: w, b: k, bias: _, preluActivationWeights: E }, D = { transposeA: t10, transposeB: o, activation: s, leakyreluAlpha: i };\n return n == null ? br((M, L, V) => {\n let z = T.runKernel(ho, R, D);\n return V([M, L, z]), { value: W(z, C), gradFunc: A };\n })(w, k) : br((M, L, V, z) => {\n let U = T.runKernel(ho, R, D);\n return z([M, L, U, V]), { value: W(U, C), gradFunc: A };\n })(w, k, _);\n}\nvar b1 = N({ fusedMatMul_: aH });\nfunction iH(r) {\n return al(r, 0.54, 0.46);\n}\nvar C1 = N({ hammingWindow_: iH });\nfunction uH(r) {\n return al(r, 0.5, 0.5);\n}\nvar Fd = N({ hannWindow_: uH });\nfunction pH(r, e, t10, o = false, n = 0) {\n let s = 0, a = [];\n for (; s + e <= r.size; )\n a.push(Ke(r, s, e)), s += t10;\n if (o)\n for (; s < r.size; ) {\n let i = s + e - r.size, p = xt([Ke(r, s, e - i), Us([i], n)]);\n a.push(p), s += t10;\n }\n return a.length === 0 ? Oi([], [0, e]) : W(xt(a), [a.length, e]);\n}\nvar Od = N({ frame_: pH });\nfunction cH(r, e, t10, o, n = Fd) {\n o == null && (o = CC(e));\n let s = Od(r, e, t10), a = ne(s, n(e));\n return Wp(a, o);\n}\nvar S1 = N({ stft_: cH });\nfunction lH(r, e, t10, o, n = \"bilinear\", s = 0) {\n let a = v(r, \"image\", \"cropAndResize\"), i = v(e, \"boxes\", \"cropAndResize\", \"float32\"), p = v(t10, \"boxInd\", \"cropAndResize\", \"int32\"), u = i.shape[0];\n $(a.rank === 4, () => `Error in cropAndResize: image must be rank 4,but got rank ${a.rank}.`), $(i.rank === 2 && i.shape[1] === 4, () => `Error in cropAndResize: boxes must be have size [${u},4] but had shape ${i.shape}.`), $(p.rank === 1 && p.shape[0] === u, () => `Error in cropAndResize: boxInd must be have size [${u}] but had shape ${i.shape}.`), $(o.length === 2, () => `Error in cropAndResize: cropSize must be of length 2, but got length ${o.length}.`), $(o[0] >= 1 && o[1] >= 1, () => `cropSize must be atleast [1,1], but was ${o}`), $(n === \"bilinear\" || n === \"nearest\", () => `method must be bilinear or nearest, but was ${n}`);\n let c = { image: a, boxes: i, boxInd: p }, l = { method: n, extrapolationValue: s, cropSize: o };\n return T.runKernel(Xo, c, l);\n}\nvar w1 = N({ cropAndResize_: lH });\nfunction mH(r) {\n let e = v(r, \"image\", \"flipLeftRight\", \"float32\");\n $(e.rank === 4, () => `Error in flipLeftRight: image must be rank 4,but got rank ${e.rank}.`);\n let t10 = { image: e };\n return T.runKernel(rn, t10, {});\n}\nvar I1 = N({ flipLeftRight_: mH });\nfunction dH(r) {\n let e = v(r, \"image\", \"grayscaleToRGB\"), t10 = e.rank - 1, o = e.shape[t10];\n $(e.rank >= 2, () => `Error in grayscaleToRGB: images must be at least rank 2, but got rank ${e.rank}.`), $(o === 1, () => `Error in grayscaleToRGB: last dimension of a grayscale image should be size 1, but got size ${o}.`);\n let n = new Array(e.rank);\n return n.fill(1, 0, t10), n[t10] = 3, Ai(e, n);\n}\nvar v1 = N({ grayscaleToRGB_: dH });\nfunction fH(r, e, t10 = 0, o = 0.5) {\n let n = v(r, \"image\", \"rotateWithOffset\", \"float32\");\n $(n.rank === 4, () => `Error in rotateWithOffset: image must be rank 4,but got rank ${n.rank}.`);\n let s = { image: n }, a = { radians: e, fillValue: t10, center: o };\n return T.runKernel(ts, s, a);\n}\nvar k1 = N({ rotateWithOffset_: fH });\nfunction wo(r, e, t10, o, n, s) {\n o == null && (o = 0.5), n == null && (n = Number.NEGATIVE_INFINITY), s == null && (s = 0);\n let a = r.shape[0];\n return t10 = Math.min(t10, a), $(0 <= o && o <= 1, () => `iouThreshold must be in [0, 1], but was '${o}'`), $(r.rank === 2, () => `boxes must be a 2D tensor, but was of rank '${r.rank}'`), $(r.shape[1] === 4, () => `boxes must have 4 columns, but 2nd dimension was ${r.shape[1]}`), $(e.rank === 1, () => \"scores must be a 1D tensor\"), $(e.shape[0] === a, () => `scores has incompatible shape with boxes. Expected ${a}, but was ${e.shape[0]}`), $(0 <= s && s <= 1, () => `softNmsSigma must be in [0, 1], but was '${s}'`), { maxOutputSize: t10, iouThreshold: o, scoreThreshold: n, softNmsSigma: s };\n}\nfunction hH(r, e, t10, o = 0.5, n = Number.NEGATIVE_INFINITY) {\n let s = v(r, \"boxes\", \"nonMaxSuppression\", \"float32\"), a = v(e, \"scores\", \"nonMaxSuppression\", \"float32\"), i = wo(s, a, t10, o, n);\n t10 = i.maxOutputSize, o = i.iouThreshold, n = i.scoreThreshold;\n let p = { maxOutputSize: t10, iouThreshold: o, scoreThreshold: n };\n return T.runKernel(Tn, { boxes: s, scores: a }, p);\n}\nvar N1 = N({ nonMaxSuppression_: hH });\nfunction T1(r, e, t10) {\n let o = gH(r, e, t10), n = o < 0 ? -(o + 1) : o;\n r.splice(n, 0, e);\n}\nfunction gH(r, e, t10) {\n return yH(r, e, t10 || xH);\n}\nfunction xH(r, e) {\n return r > e ? 1 : r < e ? -1 : 0;\n}\nfunction yH(r, e, t10) {\n let o = 0, n = r.length, s = 0, a = false;\n for (; o < n; ) {\n s = o + (n - o >>> 1);\n let i = t10(e, r[s]);\n i > 0 ? o = s + 1 : (n = s, a = !i);\n }\n return a ? o : -o - 1;\n}\nfunction Pd(r, e, t10, o, n) {\n return wC(r, e, t10, o, n, 0);\n}\nfunction Md(r, e, t10, o, n, s) {\n return wC(r, e, t10, o, n, 0, false, s, true);\n}\nfunction Ld(r, e, t10, o, n, s) {\n return wC(r, e, t10, o, n, s, true);\n}\nfunction wC(r, e, t10, o, n, s, a = false, i = false, p = false) {\n let u = [];\n for (let g = 0; g < e.length; g++)\n e[g] > n && u.push({ score: e[g], boxIndex: g, suppressBeginIndex: 0 });\n u.sort(_1);\n let c = s > 0 ? -0.5 / s : 0, l = [], m = [];\n for (; l.length < t10 && u.length > 0; ) {\n let g = u.pop(), { score: x, boxIndex: b, suppressBeginIndex: C } = g;\n if (x < n)\n break;\n let w = false;\n for (let k = l.length - 1; k >= C; --k) {\n let _ = bH(r, b, l[k]);\n if (_ >= o) {\n w = true;\n break;\n }\n if (g.score = g.score * CH(o, c, _), g.score <= n)\n break;\n }\n g.suppressBeginIndex = l.length, w || (g.score === x ? (l.push(b), m.push(g.score)) : g.score > n && T1(u, g, _1));\n }\n let d = l.length, f = t10 - d;\n i && f > 0 && (l.push(...new Array(f).fill(0)), m.push(...new Array(f).fill(0)));\n let h = { selectedIndices: l };\n return a && (h.selectedScores = m), p && (h.validOutputs = d), h;\n}\nfunction bH(r, e, t10) {\n let o = r.subarray(e * 4, e * 4 + 4), n = r.subarray(t10 * 4, t10 * 4 + 4), s = Math.min(o[0], o[2]), a = Math.min(o[1], o[3]), i = Math.max(o[0], o[2]), p = Math.max(o[1], o[3]), u = Math.min(n[0], n[2]), c = Math.min(n[1], n[3]), l = Math.max(n[0], n[2]), m = Math.max(n[1], n[3]), d = (i - s) * (p - a), f = (l - u) * (m - c);\n if (d <= 0 || f <= 0)\n return 0;\n let h = Math.max(s, u), g = Math.max(a, c), x = Math.min(i, l), b = Math.min(p, m), C = Math.max(x - h, 0) * Math.max(b - g, 0);\n return C / (d + f - C);\n}\nfunction CH(r, e, t10) {\n let o = Math.exp(e * t10 * t10);\n return t10 <= r ? o : 0;\n}\nfunction _1(r, e) {\n return r.score - e.score || r.score === e.score && e.boxIndex - r.boxIndex;\n}\nasync function SH(r, e, t10, o = 0.5, n = Number.NEGATIVE_INFINITY) {\n let s = v(r, \"boxes\", \"nonMaxSuppressionAsync\"), a = v(e, \"scores\", \"nonMaxSuppressionAsync\"), i = wo(s, a, t10, o, n);\n t10 = i.maxOutputSize, o = i.iouThreshold, n = i.scoreThreshold;\n let p = await Promise.all([s.data(), a.data()]), u = p[0], c = p[1], { selectedIndices: l } = Pd(u, c, t10, o, n);\n return s !== r && s.dispose(), a !== e && a.dispose(), dr(l, \"int32\");\n}\nvar $1 = SH;\nfunction wH(r, e, t10, o = 0.5, n = Number.NEGATIVE_INFINITY, s = 0) {\n let a = v(r, \"boxes\", \"nonMaxSuppression\"), i = v(e, \"scores\", \"nonMaxSuppression\"), p = wo(a, i, t10, o, n, s);\n t10 = p.maxOutputSize, o = p.iouThreshold, n = p.scoreThreshold, s = p.softNmsSigma;\n let u = { boxes: a, scores: i }, c = { maxOutputSize: t10, iouThreshold: o, scoreThreshold: n, softNmsSigma: s }, l = T.runKernel(_n, u, c);\n return { selectedIndices: l[0], selectedScores: l[1] };\n}\nvar E1 = N({ nonMaxSuppressionWithScore_: wH });\nasync function IH(r, e, t10, o = 0.5, n = Number.NEGATIVE_INFINITY, s = 0) {\n let a = v(r, \"boxes\", \"nonMaxSuppressionAsync\"), i = v(e, \"scores\", \"nonMaxSuppressionAsync\"), p = wo(a, i, t10, o, n, s);\n t10 = p.maxOutputSize, o = p.iouThreshold, n = p.scoreThreshold, s = p.softNmsSigma;\n let u = await Promise.all([a.data(), i.data()]), c = u[0], l = u[1], { selectedIndices: m, selectedScores: d } = Ld(c, l, t10, o, n, s);\n return a !== r && a.dispose(), i !== e && i.dispose(), { selectedIndices: dr(m, \"int32\"), selectedScores: dr(d) };\n}\nvar A1 = IH;\nfunction vH(r, e, t10, o = 0.5, n = Number.NEGATIVE_INFINITY, s = false) {\n let a = v(r, \"boxes\", \"nonMaxSuppression\"), i = v(e, \"scores\", \"nonMaxSuppression\"), p = wo(a, i, t10, o, n, null), u = p.maxOutputSize, c = p.iouThreshold, l = p.scoreThreshold, m = { boxes: a, scores: i }, d = { maxOutputSize: u, iouThreshold: c, scoreThreshold: l, padToMaxOutputSize: s }, f = T.runKernel(ba, m, d);\n return { selectedIndices: f[0], validOutputs: f[1] };\n}\nvar R1 = N({ nonMaxSuppressionPadded_: vH });\nasync function kH(r, e, t10, o = 0.5, n = Number.NEGATIVE_INFINITY, s = false) {\n let a = v(r, \"boxes\", \"nonMaxSuppressionAsync\"), i = v(e, \"scores\", \"nonMaxSuppressionAsync\"), p = wo(a, i, t10, o, n, null), u = p.maxOutputSize, c = p.iouThreshold, l = p.scoreThreshold, [m, d] = await Promise.all([a.data(), i.data()]), { selectedIndices: f, validOutputs: h } = Md(m, d, u, c, l, s);\n return a !== r && a.dispose(), i !== e && i.dispose(), { selectedIndices: dr(f, \"int32\"), validOutputs: Ce(h, \"int32\") };\n}\nvar D1 = kH;\nfunction NH(r, e, t10 = false, o = false) {\n let n = v(r, \"images\", \"resizeBilinear\");\n $(n.rank === 3 || n.rank === 4, () => `Error in resizeBilinear: x must be rank 3 or 4, but got rank ${n.rank}.`), $(e.length === 2, () => `Error in resizeBilinear: new shape must 2D, but got shape ${e}.`), $(o === false || t10 === false, () => \"Error in resizeBilinear: If halfPixelCenters is true, alignCorners must be false.\");\n let s = n, a = false;\n n.rank === 3 && (a = true, s = W(n, [1, n.shape[0], n.shape[1], n.shape[2]]));\n let [] = e, i = { images: s }, p = { alignCorners: t10, halfPixelCenters: o, size: e }, u = T.runKernel(Mn, i, p);\n return a ? W(u, [u.shape[1], u.shape[2], u.shape[3]]) : u;\n}\nvar F1 = N({ resizeBilinear_: NH });\nfunction TH(r, e, t10 = false, o = false) {\n let n = v(r, \"images\", \"resizeNearestNeighbor\");\n $(n.rank === 3 || n.rank === 4, () => `Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${n.rank}.`), $(e.length === 2, () => `Error in resizeNearestNeighbor: new shape must 2D, but got shape ${e}.`), $(n.dtype === \"float32\" || n.dtype === \"int32\", () => \"`images` must have `int32` or `float32` as dtype\"), $(o === false || t10 === false, () => \"Error in resizeNearestNeighbor: If halfPixelCenters is true, alignCorners must be false.\");\n let s = n, a = false;\n n.rank === 3 && (a = true, s = W(n, [1, n.shape[0], n.shape[1], n.shape[2]]));\n let [] = e, i = { images: s }, p = { alignCorners: t10, halfPixelCenters: o, size: e }, u = T.runKernel(Pn, i, p);\n return a ? W(u, [u.shape[1], u.shape[2], u.shape[3]]) : u;\n}\nvar O1 = N({ resizeNearestNeighbor_: TH });\nfunction _H(r, e = \"binary\", t10 = false, o = 0.5) {\n let n = v(r, \"image\", \"threshold\"), s = 0.2989, a = 0.587, i = 0.114, p = n.shape[0] * n.shape[1], u = ne(dr([o]), 255), c, l, m, d;\n if ($(n.rank === 3, () => `Error in threshold: image must be rank 3,but got rank ${n.rank}.`), $(n.shape[2] === 3 || n.shape[2] === 1, () => `Error in threshold: image color channel must be equal to 3 or 1but got ${n.shape[2]}.`), $(n.dtype === \"int32\" || n.dtype === \"float32\", () => `Error in dtype: image dtype must be int32 or float32,but got dtype ${n.dtype}.`), $(e === \"otsu\" || e === \"binary\", () => `Method must be binary or otsu, but was ${e}`), n.shape[2] === 3) {\n [c, l, m] = Oa(n, [1, 1, 1], -1);\n let g = ne(c, s), x = ne(l, a), b = ne(m, i);\n d = be(be(g, x), b);\n } else\n d = r;\n if (e === \"otsu\") {\n let g = Xm(je(Nd(d), \"int32\"), nr([]), 256);\n u = $H(g, p);\n }\n let f = t10 ? Vp(d, u) : uu(d, u);\n return je(ne(f, 255), \"int32\");\n}\nfunction $H(r, e) {\n let t10 = dr([-1]), o = dr([0]), n = dr([0]), s, a, i, p, u, c;\n for (let l = 0; l < r.size - 1; l++) {\n s = Ke(r, 0, l + 1), a = Ke(r, l + 1), u = He(et(s), e), c = He(et(a), e);\n let m = et(ne(s, Di(0, s.size)));\n i = He(m, et(s));\n let d = Us(a.shape, s.size), f = be(Di(0, a.size), d), h = ne(a, f);\n p = He(et(h), et(a));\n let g = ke(i, p), x = ke(i, p), b = ne(u, c);\n n = ne(ne(b, g), x);\n let C = uu(n, o);\n o = ss(C, n, o), t10 = ss(C, dr([l]), t10);\n }\n return t10;\n}\nvar P1 = N({ threshold_: _H });\nfunction EH(r, e, t10 = \"nearest\", o = \"constant\", n = 0, s) {\n let a = v(r, \"image\", \"transform\", \"float32\"), i = v(e, \"transforms\", \"transform\", \"float32\");\n $(a.rank === 4, () => `Error in transform: image must be rank 4,but got rank ${a.rank}.`), $(i.rank === 2 && (i.shape[0] === a.shape[0] || i.shape[0] === 1) && i.shape[1] === 8, () => \"Error in transform: Input transform should be batch x 8 or 1 x 8\"), $(s == null || s.length === 2, () => `Error in transform: outputShape must be [height, width] or null, but got ${s}.`);\n let p = { image: a, transforms: i }, u = { interpolation: t10, fillMode: o, fillValue: n, outputShape: s };\n return T.runKernel(es, p, u);\n}\nvar M1 = N({ transform_: EH });\nfunction AH(r, e, t10) {\n $(e % 1 === 0, () => `bandPart(): numLower must be an integer, got ${e}.`), $(t10 % 1 === 0, () => `bandPart(): numUpper must be an integer, got ${t10}.`);\n let o = v(r, \"a\", \"bandPart\");\n $(o.rank >= 2, () => `bandPart(): Rank must be at least 2, got ${o.rank}.`);\n let n = o.shape, [s, a] = o.shape.slice(-2);\n if (!(e <= s))\n throw new Error(`bandPart(): numLower (${e}) must not be greater than the number of rows (${s}).`);\n if (!(t10 <= a))\n throw new Error(`bandPart(): numUpper (${t10}) must not be greater than the number of columns (${a}).`);\n e < 0 && (e = s), t10 < 0 && (t10 = a);\n let i = W(Di(0, s, 1, \"int32\"), [-1, 1]), p = Di(0, a, 1, \"int32\"), u = ke(i, p), c = pu(Vp(u, Ce(+e, \"int32\")), od(u, Ce(-t10, \"int32\"))), l = Br([s, a], o.dtype);\n return W(Sr(so(W(o, [-1, s, a])).map((m) => ss(c, m, l))), n);\n}\nvar L1 = N({ bandPart_: AH });\nfunction RH(r) {\n let e;\n if (Array.isArray(r)) {\n e = false, $(r != null && r.length > 0, () => \"Gram-Schmidt process: input must not be null, undefined, or empty\");\n let n = r[0].shape[0];\n for (let s = 1; s < r.length; ++s)\n $(r[s].shape[0] === n, () => `Gram-Schmidt: Non-unique lengths found in the input vectors: (${r[s].shape[0]} vs. ${n})`);\n } else\n e = true, r = Oa(r, r.shape[0], 0).map((n) => Up(n, [0]));\n $(r.length <= r[0].shape[0], () => `Gram-Schmidt: Number of vectors (${r.length}) exceeds number of dimensions (${r[0].shape[0]}).`);\n let t10 = [], o = r;\n for (let n = 0; n < r.length; ++n)\n t10.push(T.tidy(() => {\n let s = o[n];\n if (n > 0)\n for (let a = 0; a < n; ++a) {\n let i = ne(et(ne(t10[a], s)), t10[a]);\n s = ke(s, i);\n }\n return He(s, iu(s, \"euclidean\"));\n }));\n return e ? Sr(t10, 0) : t10;\n}\nvar B1 = N({ gramSchmidt_: RH });\nfunction DH(r, e = false) {\n if ($(r.rank >= 2, () => `qr() requires input tensor to have a rank >= 2, but got rank ${r.rank}`), r.rank === 2)\n return V1(r, e);\n {\n let t10 = r.shape.slice(0, r.shape.length - 2).reduce((p, u) => p * u), o = so(W(r, [t10, r.shape[r.shape.length - 2], r.shape[r.shape.length - 1]]), 0), n = [], s = [];\n o.forEach((p) => {\n let [u, c] = V1(p, e);\n n.push(u), s.push(c);\n });\n let a = W(Sr(n, 0), r.shape), i = W(Sr(s, 0), r.shape);\n return [a, i];\n }\n}\nfunction V1(r, e = false) {\n return T.tidy(() => {\n $(r.shape.length === 2, () => `qr2d() requires a 2D Tensor, but got a ${r.shape.length}D Tensor.`);\n let t10 = r.shape[0], o = r.shape[1], n = ed(t10), s = Lr(r), a = Oi([[1]], [1, 1]), i = Lr(a), p = t10 >= o ? o : t10;\n for (let u = 0; u < p; ++u) {\n let c = s, l = i, m = n;\n [i, s, n] = T.tidy(() => {\n let d = Ke(s, [u, u], [t10 - u, 1]), f = iu(d), h = Ke(s, [u, u], [1, 1]), g = ss(uu(h, 0), Oi([[-1]]), Oi([[1]])), x = ke(h, ne(g, f)), b = He(d, x);\n b.shape[0] === 1 ? i = Lr(a) : i = xt([a, Ke(b, [1, 0], [b.shape[0] - 1, b.shape[1]])], 0);\n let C = Cr(He(Xe(g, x), f)), w = Ke(s, [u, 0], [t10 - u, o]), k = ne(C, i), _ = Gp(i);\n if (u === 0)\n s = ke(w, Xe(k, Xe(_, w)));\n else {\n let R = ke(w, Xe(k, Xe(_, w)));\n s = xt([Ke(s, [0, 0], [u, o]), R], 0);\n }\n let E = Gp(k), A = Ke(n, [0, u], [t10, n.shape[1] - u]);\n if (u === 0)\n n = ke(A, Xe(Xe(A, i), E));\n else {\n let R = ke(A, Xe(Xe(A, i), E));\n n = xt([Ke(n, [0, 0], [t10, u]), R], 1);\n }\n return [i, s, n];\n }), Ot([c, l, m]);\n }\n return !e && t10 > o && (n = Ke(n, [0, 0], [t10, o]), s = Ke(s, [0, 0], [o, o])), [n, s];\n });\n}\nvar z1 = N({ qr_: DH });\nvar $t;\n(function(r) {\n r[r.NONE = 0] = \"NONE\", r[r.MEAN = 1] = \"MEAN\", r[r.SUM = 2] = \"SUM\", r[r.SUM_BY_NONZERO_WEIGHTS = 3] = \"SUM_BY_NONZERO_WEIGHTS\";\n})($t || ($t = {}));\nfunction FH(r, e, t10 = $t.SUM_BY_NONZERO_WEIGHTS) {\n let o = v(r, \"losses\", \"computeWeightedLoss\"), n = null;\n e != null && (n = v(e, \"weights\", \"computeWeightedLoss\"));\n let s = n == null ? o : ne(o, n);\n if (t10 === $t.NONE)\n return s;\n if (t10 === $t.SUM)\n return et(s);\n if (t10 === $t.MEAN) {\n if (n == null)\n return cu(s);\n {\n let a = o.size / n.size, i = He(et(s), et(n));\n return a > 1 ? He(i, Ce(a)) : i;\n }\n }\n if (t10 === $t.SUM_BY_NONZERO_WEIGHTS) {\n if (n == null)\n return He(et(s), Ce(o.size));\n {\n let a = ne(n, Hs(o.shape)), i = je(et(hd(a, Ce(0))), \"float32\");\n return He(et(s), i);\n }\n }\n throw Error(`Unknown reduction: ${t10}`);\n}\nvar ar = N({ computeWeightedLoss_: FH });\nfunction OH(r, e, t10, o = $t.SUM_BY_NONZERO_WEIGHTS) {\n let n = v(r, \"labels\", \"absoluteDifference\"), s = v(e, \"predictions\", \"absoluteDifference\"), a = null;\n t10 != null && (a = v(t10, \"weights\", \"absoluteDifference\")), gt(n.shape, s.shape, \"Error in absoluteDifference: \");\n let i = Yt(ke(n, s));\n return ar(i, a, o);\n}\nvar W1 = N({ absoluteDifference_: OH });\nfunction PH(r, e, t10, o, n = $t.SUM_BY_NONZERO_WEIGHTS) {\n let s = v(r, \"labels\", \"cosineDistance\"), a = v(e, \"predictions\", \"cosineDistance\"), i = null;\n o != null && (i = v(o, \"weights\", \"cosineDistance\")), gt(s.shape, a.shape, \"Error in cosineDistance: \");\n let p = Ce(1), u = ke(p, et(ne(s, a), t10, true));\n return ar(u, i, n);\n}\nvar U1 = N({ cosineDistance_: PH });\nfunction MH(r, e, t10, o = $t.SUM_BY_NONZERO_WEIGHTS) {\n let n = v(r, \"labels\", \"hingeLoss\"), s = v(e, \"predictions\", \"hingeLoss\"), a = null;\n t10 != null && (a = v(t10, \"weights\", \"hingeLoss\")), gt(n.shape, s.shape, \"Error in hingeLoss: \");\n let i = Ce(1);\n n = ke(ne(Ce(2), n), i);\n let p = Fi(ke(i, ne(n, s)));\n return ar(p, a, o);\n}\nvar G1 = N({ hingeLoss_: MH });\nfunction LH(r, e, t10, o = 1, n = $t.SUM_BY_NONZERO_WEIGHTS) {\n let s = v(r, \"labels\", \"huberLoss\"), a = v(e, \"predictions\", \"huberLoss\"), i = null;\n t10 != null && (i = v(t10, \"weights\", \"huberLoss\")), gt(s.shape, a.shape, \"Error in huberLoss: \");\n let p = Ce(o), u = Yt(ke(a, s)), c = fd(u, p), l = ke(u, c), m = be(ne(Ce(0.5), Qt(c)), ne(p, l));\n return ar(m, i, n);\n}\nvar H1 = N({ huberLoss_: LH });\nfunction BH(r, e, t10, o = 1e-7, n = $t.SUM_BY_NONZERO_WEIGHTS) {\n let s = v(r, \"labels\", \"logLoss\"), a = v(e, \"predictions\", \"logLoss\"), i = null;\n t10 != null && (i = v(t10, \"weights\", \"logLoss\")), gt(s.shape, a.shape, \"Error in logLoss: \");\n let p = Ce(1), u = Ce(o), c = Cr(ne(s, Da(be(a, u)))), l = ne(ke(p, s), Da(be(ke(p, a), u))), m = ke(c, l);\n return ar(m, i, n);\n}\nvar K1 = N({ logLoss_: BH });\nfunction VH(r, e, t10, o = $t.SUM_BY_NONZERO_WEIGHTS) {\n let n = v(r, \"labels\", \"meanSquaredError\"), s = v(e, \"predictions\", \"meanSquaredError\"), a = null;\n t10 != null && (a = v(t10, \"weights\", \"meanSquaredError\")), gt(n.shape, s.shape, \"Error in meanSquaredError: \");\n let i = _d(n, s);\n return ar(i, a, o);\n}\nvar q1 = N({ meanSquaredError_: VH });\nfunction zH(r, e) {\n let t10 = v(r, \"labels\", \"sigmoidCrossEntropyWithLogits\"), o = v(e, \"logits\", \"sigmoidCrossEntropyWithLogits\");\n gt(t10.shape, o.shape, \"Error in sigmoidCrossEntropyWithLogits: \");\n let n = Fi(o), s = ne(o, t10), a = sd(So(Cr(Yt(o))));\n return be(ke(n, s), a);\n}\nfunction WH(r, e, t10, o = 0, n = $t.SUM_BY_NONZERO_WEIGHTS) {\n let s = v(r, \"multiClassLabels\", \"sigmoidCrossEntropy\"), a = v(e, \"logits\", \"sigmoidCrossEntropy\"), i = null;\n if (t10 != null && (i = v(t10, \"weights\", \"sigmoidCrossEntropy\")), gt(s.shape, a.shape, \"Error in sigmoidCrossEntropy: \"), o > 0) {\n let u = Ce(o), c = Ce(1), l = Ce(0.5);\n s = be(ne(s, ke(c, u)), ne(l, u));\n }\n let p = zH(s, a);\n return ar(p, i, n);\n}\nvar j1 = N({ sigmoidCrossEntropy_: WH });\nfunction UH(r, e, t10 = -1) {\n if (t10 === -1 && (t10 = e.rank - 1), t10 !== e.rank - 1)\n throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${e.rank} and dim was ${t10}`);\n return br((n, s, a) => {\n let p = ud(s, [t10], true), u = ke(je(s, \"float32\"), p);\n a([n, u]);\n let c = Cr(ne(u, n));\n return { value: et(c, [t10]), gradFunc: (d, f) => {\n let [h, g] = f, x = Ea(d.shape, [t10]);\n return [ne(W(d, x), ke(je(h, \"float32\"), So(g))), ne(W(d, x), ke(So(g), je(h, \"float32\")))];\n } };\n })(r, e);\n}\nfunction GH(r, e, t10, o = 0, n = $t.SUM_BY_NONZERO_WEIGHTS) {\n let s = v(r, \"onehotLabels\", \"softmaxCrossEntropy\"), a = v(e, \"logits\", \"softmaxCrossEntropy\"), i = null;\n if (t10 != null && (i = v(t10, \"weights\", \"softmaxCrossEntropy\")), gt(s.shape, a.shape, \"Error in softmaxCrossEntropy: \"), o > 0) {\n let u = Ce(o), c = Ce(1), l = Ce(s.shape[1]);\n s = be(ne(s, ke(c, u)), He(u, l));\n }\n let p = UH(s, a);\n return ar(p, i, n);\n}\nvar X1 = N({ softmaxCrossEntropy_: GH });\nfunction HH(r, e, t10, o) {\n let n = v(r, \"indices\", \"sparseFillEmptyRows\", \"int32\"), s = v(e, \"values\", \"sparseFillEmptyRows\"), a = v(t10, \"denseShape\", \"sparseFillEmptyRows\", \"int32\"), i = v(o, \"defaultValue\", \"sparseFillEmptyRows\", s.dtype);\n if (n.rank !== 2)\n throw new Error(`Indices should be Tensor2D but received shape\n ${n.shape}`);\n if (s.rank !== 1)\n throw new Error(`Values should be Tensor1D but received shape ${s.shape}`);\n if (a.rank !== 1)\n throw new Error(`Dense shape should be Tensor1D but received shape ${a.shape}`);\n if (i.rank !== 0)\n throw new Error(`Default value should be a scalar but received shape ${i.shape}`);\n let p = { indices: n, values: s, denseShape: a, defaultValue: i }, u = T.runKernel(hi, p);\n return { outputIndices: u[0], outputValues: u[1], emptyRowIndicator: u[2], reverseIndexMap: u[3] };\n}\nvar Y1 = N({ sparseFillEmptyRows_: HH });\nfunction KH(r, e, t10) {\n let o = v(r, \"inputIndices\", \"sparseReshape\", \"int32\"), n = v(e, \"inputShape\", \"sparseReshape\", \"int32\"), s = v(t10, \"newShape\", \"sparseReshape\", \"int32\");\n if (o.rank !== 2)\n throw new Error(`Input indices should be Tensor2D but received shape\n ${o.shape}`);\n if (n.rank !== 1)\n throw new Error(`Input shape should be Tensor1D but received shape ${n.shape}`);\n if (s.rank !== 1)\n throw new Error(`New shape should be Tensor1D but received shape ${s.shape}`);\n let a = { inputIndices: o, inputShape: n, newShape: s }, i = T.runKernel(va, a);\n return { outputIndices: i[0], outputShape: i[1] };\n}\nvar Q1 = N({ sparseReshape_: KH });\nfunction qH(r, e, t10) {\n let o = v(r, \"data\", \"sparseSegmentMean\"), n = v(e, \"indices\", \"sparseSegmentMean\", \"int32\"), s = v(t10, \"segmentIds\", \"sparseSegmentMean\", \"int32\");\n if (o.rank < 1)\n throw new Error(\"Data should be at least 1 dimensional but received scalar\");\n if (n.rank !== 1)\n throw new Error(`Indices should be Tensor1D but received shape\n ${n.shape}`);\n if (s.rank !== 1)\n throw new Error(`Segment ids should be Tensor1D but received shape\n ${s.shape}`);\n let a = { data: o, indices: n, segmentIds: s };\n return T.runKernel(gi, a);\n}\nvar Z1 = N({ sparseSegmentMean_: qH });\nfunction jH(r, e, t10) {\n let o = v(r, \"data\", \"sparseSegmentSum\"), n = v(e, \"indices\", \"sparseSegmentSum\", \"int32\"), s = v(t10, \"segmentIds\", \"sparseSegmentSum\", \"int32\");\n if (o.rank < 1)\n throw new Error(\"Data should be at least 1 dimensional but received scalar\");\n if (n.rank !== 1)\n throw new Error(`Indices should be Tensor1D but received shape\n ${n.shape}`);\n if (s.rank !== 1)\n throw new Error(`Segment ids should be Tensor1D but received shape\n ${s.shape}`);\n let a = { data: o, indices: n, segmentIds: s };\n return T.runKernel(xi, a);\n}\nvar J1 = N({ sparseSegmentSum_: jH });\nfunction XH(r, e, t10, o, n, s, a, i) {\n let p = v(r, \"data\", \"stringNGrams\", \"string\");\n if (p.dtype !== \"string\")\n throw new Error(\"Data must be of datatype string\");\n if (p.shape.length !== 1)\n throw new Error(`Data must be a vector, saw: ${p.shape}`);\n let u = v(e, \"dataSplits\", \"stringNGrams\");\n if (u.dtype !== \"int32\")\n throw new Error(\"Data splits must be of datatype int32\");\n let c = { separator: t10, nGramWidths: o, leftPad: n, rightPad: s, padWidth: a, preserveShortSequences: i }, l = { data: p, dataSplits: u }, m = T.runKernel(Ds, l, c);\n return { nGrams: m[0], nGramsSplits: m[1] };\n}\nvar eN = N({ stringNGrams_: XH });\nfunction YH(r, e, t10 = true) {\n let o = v(r, \"input\", \"stringSplit\", \"string\"), n = v(e, \"delimiter\", \"stringSplit\", \"string\");\n if (o.rank !== 1)\n throw new Error(`Input should be Tensor1D but received shape ${o.shape}`);\n if (n.rank !== 0)\n throw new Error(`Delimiter should be a scalar but received shape ${n.shape}`);\n let s = { skipEmpty: t10 }, a = { input: o, delimiter: n }, i = T.runKernel(Ci, a, s);\n return { indices: i[0], values: i[1], shape: i[2] };\n}\nvar tN = N({ stringSplit_: YH });\nfunction QH(r, e) {\n let t10 = v(r, \"input\", \"stringToHashBucketFast\", \"string\"), o = { numBuckets: e };\n if (e <= 0)\n throw new Error(\"Number of buckets must be at least 1\");\n let n = { input: t10 };\n return T.runKernel(Si, n, o);\n}\nvar rN = N({ stringToHashBucketFast_: QH });\nvar ZH = { fft: zp, ifft: du, rfft: Wp, irfft: Td };\nvar JH = { hammingWindow: C1, hannWindow: Fd, frame: Od, stft: S1 };\nvar eK = { flipLeftRight: I1, grayscaleToRGB: v1, resizeNearestNeighbor: O1, resizeBilinear: F1, rotateWithOffset: k1, cropAndResize: w1, nonMaxSuppression: N1, nonMaxSuppressionAsync: $1, nonMaxSuppressionWithScore: E1, nonMaxSuppressionWithScoreAsync: A1, nonMaxSuppressionPadded: R1, nonMaxSuppressionPaddedAsync: D1, threshold: P1, transform: M1 };\nvar tK = { bandPart: L1, gramSchmidt: B1, qr: z1 };\nvar rK = { absoluteDifference: W1, computeWeightedLoss: ar, cosineDistance: U1, hingeLoss: G1, huberLoss: H1, logLoss: K1, meanSquaredError: q1, sigmoidCrossEntropy: j1, softmaxCrossEntropy: X1 };\nvar oK = { sparseFillEmptyRows: Y1, sparseReshape: Q1, sparseSegmentMean: Z1, sparseSegmentSum: J1 };\nvar nK = { stringNGrams: eN, stringSplit: tN, stringToHashBucketFast: rN };\nvar oN = {};\nGe(oN, { Serializable: () => il, SerializationMap: () => qs, registerClass: () => IC });\nvar il = class {\n getClassName() {\n return this.constructor.className;\n }\n static fromConfig(e, t10) {\n return new e(t10);\n }\n};\nvar qs = class {\n constructor() {\n this.classNameMap = {};\n }\n static getMap() {\n return qs.instance == null && (qs.instance = new qs()), qs.instance;\n }\n static register(e) {\n qs.getMap().classNameMap[e.className] = [e, e.fromConfig];\n }\n};\nfunction IC(r) {\n $(r.className != null, () => \"Class being registered does not have the static className property defined.\"), $(typeof r.className == \"string\", () => \"className is required to be a string, but got type \" + typeof r.className), $(r.className.length > 0, () => \"Class being registered has an empty-string as its className, which is disallowed.\"), qs.register(r);\n}\nvar wr = class extends il {\n minimize(e, t10 = false, o) {\n let { value: n, grads: s } = this.computeGradients(e, o);\n if (o != null) {\n let a = o.map((i) => ({ name: i.name, tensor: s[i.name] }));\n this.applyGradients(a);\n } else\n this.applyGradients(s);\n return Ot(s), t10 ? n : (n.dispose(), null);\n }\n get iterations() {\n return this.iterations_ == null && (this.iterations_ = 0), this.iterations_;\n }\n incrementIterations() {\n this.iterations_ = this.iterations + 1;\n }\n computeGradients(e, t10) {\n return pC(e, t10);\n }\n dispose() {\n this.iterations_ != null && Ot(this.iterations_);\n }\n async saveIterations() {\n return this.iterations_ == null && (this.iterations_ = 0), { name: \"iter\", tensor: Ce(this.iterations_, \"int32\") };\n }\n async getWeights() {\n throw new Error(\"getWeights() is not implemented for this optimizer yet.\");\n }\n async setWeights(e) {\n throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`);\n }\n async extractIterations(e) {\n return this.iterations_ = (await e[0].tensor.data())[0], e.slice(1);\n }\n};\nObject.defineProperty(wr, Symbol.hasInstance, { value: (r) => r.minimize != null && r.computeGradients != null && r.applyGradients != null });\nvar yu = class extends wr {\n constructor(e, t10, o = null) {\n super(), this.learningRate = e, this.rho = t10, this.epsilon = o, this.accumulatedGrads = [], this.accumulatedUpdates = [], o == null && (this.epsilon = T.backend.epsilon());\n }\n static get className() {\n return \"Adadelta\";\n }\n applyGradients(e) {\n (Array.isArray(e) ? e.map((o) => o.name) : Object.keys(e)).forEach((o, n) => {\n let s = T.registeredVariables[o], a = false;\n this.accumulatedGrads[n] == null && (this.accumulatedGrads[n] = { originalName: `${o}/accum_grad`, variable: Ee(() => Ut(s).variable(a)) }), this.accumulatedUpdates[n] == null && (this.accumulatedUpdates[n] = { originalName: `${o}/accum_var`, variable: Ee(() => Ut(s).variable(a)) });\n let i = Array.isArray(e) ? e[n].tensor : e[o];\n if (i == null)\n return;\n let p = this.accumulatedGrads[n].variable, u = this.accumulatedUpdates[n].variable;\n Ee(() => {\n let c = be(ne(p, this.rho), ne(Qt(i), 1 - this.rho)), l = ne(He($r(be(u, this.epsilon)), $r(be(p, this.epsilon))), i), m = be(ne(u, this.rho), ne(Qt(l), 1 - this.rho));\n p.assign(c), u.assign(m);\n let d = be(ne(l, -this.learningRate), s);\n s.assign(d);\n });\n }), this.incrementIterations();\n }\n dispose() {\n this.accumulatedUpdates != null && (Ot(this.accumulatedGrads.map((e) => e.variable)), Ot(this.accumulatedUpdates.map((e) => e.variable)));\n }\n async getWeights() {\n let e = [...this.accumulatedGrads, ...this.accumulatedUpdates];\n return [await this.saveIterations()].concat(e.map((t10) => ({ name: t10.originalName, tensor: t10.variable })));\n }\n async setWeights(e) {\n e = await this.extractIterations(e);\n let t10 = e.length / 2, o = false;\n this.accumulatedGrads = e.slice(0, t10).map((n) => ({ originalName: n.name, variable: n.tensor.variable(o) })), this.accumulatedUpdates = e.slice(t10, t10 * 2).map((n) => ({ originalName: n.name, variable: n.tensor.variable(o) }));\n }\n getConfig() {\n return { learningRate: this.learningRate, rho: this.rho, epsilon: this.epsilon };\n }\n static fromConfig(e, t10) {\n return new e(t10.learningRate, t10.rho, t10.epsilon);\n }\n};\nvar bu = class extends wr {\n constructor(e, t10 = 0.1) {\n super(), this.learningRate = e, this.initialAccumulatorValue = t10, this.accumulatedGrads = [];\n }\n static get className() {\n return \"Adagrad\";\n }\n applyGradients(e) {\n (Array.isArray(e) ? e.map((o) => o.name) : Object.keys(e)).forEach((o, n) => {\n let s = T.registeredVariables[o];\n this.accumulatedGrads[n] == null && (this.accumulatedGrads[n] = { originalName: `${o}/accumulator`, variable: Ee(() => Us(s.shape, this.initialAccumulatorValue).variable(false)) });\n let a = Array.isArray(e) ? e[n].tensor : e[o];\n if (a == null)\n return;\n let i = this.accumulatedGrads[n].variable;\n Ee(() => {\n let p = be(i, Qt(a));\n i.assign(p);\n let u = be(ne(He(a, $r(be(p, T.backend.epsilon()))), -this.learningRate), s);\n s.assign(u);\n });\n }), this.incrementIterations();\n }\n dispose() {\n this.accumulatedGrads != null && Ot(this.accumulatedGrads.map((e) => e.variable));\n }\n async getWeights() {\n return [await this.saveIterations()].concat(this.accumulatedGrads.map((e) => ({ name: e.originalName, tensor: e.variable })));\n }\n async setWeights(e) {\n e = await this.extractIterations(e);\n let t10 = false;\n this.accumulatedGrads = e.map((o) => ({ originalName: o.name, variable: o.tensor.variable(t10) }));\n }\n getConfig() {\n return { learningRate: this.learningRate, initialAccumulatorValue: this.initialAccumulatorValue };\n }\n static fromConfig(e, t10) {\n return new e(t10.learningRate, t10.initialAccumulatorValue);\n }\n};\nvar Cu = class extends wr {\n constructor(e, t10, o, n = null) {\n super(), this.learningRate = e, this.beta1 = t10, this.beta2 = o, this.epsilon = n, this.accumulatedFirstMoment = [], this.accumulatedSecondMoment = [], Ee(() => {\n this.accBeta1 = Ce(t10).variable(), this.accBeta2 = Ce(o).variable();\n }), n == null && (this.epsilon = T.backend.epsilon());\n }\n static get className() {\n return \"Adam\";\n }\n applyGradients(e) {\n let t10 = Array.isArray(e) ? e.map((o) => o.name) : Object.keys(e);\n Ee(() => {\n let o = ke(1, this.accBeta1), n = ke(1, this.accBeta2);\n t10.forEach((s, a) => {\n let i = T.registeredVariables[s], p = false;\n this.accumulatedFirstMoment[a] == null && (this.accumulatedFirstMoment[a] = { originalName: `${s}/m`, variable: Ee(() => Ut(i).variable(p)) }), this.accumulatedSecondMoment[a] == null && (this.accumulatedSecondMoment[a] = { originalName: `${s}/v`, variable: Ee(() => Ut(i).variable(p)) });\n let u = Array.isArray(e) ? e[a].tensor : e[s];\n if (u == null)\n return;\n let c = this.accumulatedFirstMoment[a].variable, l = this.accumulatedSecondMoment[a].variable, m = be(ne(c, this.beta1), ne(u, 1 - this.beta1)), d = be(ne(l, this.beta2), ne(Qt(u), 1 - this.beta2)), f = He(m, o), h = He(d, n);\n c.assign(m), l.assign(d);\n let g = be(ne(He(f, be($r(h), this.epsilon)), -this.learningRate), i);\n i.assign(g);\n }), this.accBeta1.assign(ne(this.accBeta1, this.beta1)), this.accBeta2.assign(ne(this.accBeta2, this.beta2));\n }), this.incrementIterations();\n }\n dispose() {\n this.accBeta1.dispose(), this.accBeta2.dispose(), this.accumulatedFirstMoment != null && Ot(this.accumulatedFirstMoment.map((e) => e.variable)), this.accumulatedSecondMoment != null && Ot(this.accumulatedSecondMoment.map((e) => e.variable));\n }\n async getWeights() {\n let e = [...this.accumulatedFirstMoment, ...this.accumulatedSecondMoment];\n return [await this.saveIterations()].concat(e.map((t10) => ({ name: t10.originalName, tensor: t10.variable })));\n }\n async setWeights(e) {\n e = await this.extractIterations(e), Ee(() => {\n this.accBeta1.assign(Aa(this.beta1, this.iterations_ + 1)), this.accBeta2.assign(Aa(this.beta2, this.iterations_ + 1));\n });\n let t10 = e.length / 2, o = false;\n this.accumulatedFirstMoment = e.slice(0, t10).map((n) => ({ originalName: n.name, variable: n.tensor.variable(o) })), this.accumulatedSecondMoment = e.slice(t10, t10 * 2).map((n) => ({ originalName: n.name, variable: n.tensor.variable(o) }));\n }\n getConfig() {\n return { learningRate: this.learningRate, beta1: this.beta1, beta2: this.beta2, epsilon: this.epsilon };\n }\n static fromConfig(e, t10) {\n return new e(t10.learningRate, t10.beta1, t10.beta2, t10.epsilon);\n }\n};\nvar Su = class extends wr {\n constructor(e, t10, o, n = null, s = 0) {\n super(), this.learningRate = e, this.beta1 = t10, this.beta2 = o, this.epsilon = n, this.decay = s, this.accumulatedFirstMoment = [], this.accumulatedWeightedInfNorm = [], Ee(() => {\n this.iteration = Ce(0).variable(), this.accBeta1 = Ce(t10).variable();\n }), n == null && (this.epsilon = T.backend.epsilon());\n }\n static get className() {\n return \"Adamax\";\n }\n applyGradients(e) {\n let t10 = Array.isArray(e) ? e.map((o) => o.name) : Object.keys(e);\n Ee(() => {\n let o = ke(1, this.accBeta1), n = He(-this.learningRate, be(ne(this.iteration, this.decay), 1));\n t10.forEach((s, a) => {\n let i = T.registeredVariables[s], p = false;\n this.accumulatedFirstMoment[a] == null && (this.accumulatedFirstMoment[a] = { originalName: `${s}/m`, variable: Ut(i).variable(p) }), this.accumulatedWeightedInfNorm[a] == null && (this.accumulatedWeightedInfNorm[a] = { originalName: `${s}/v`, variable: Ut(i).variable(p) });\n let u = Array.isArray(e) ? e[a].tensor : e[s];\n if (u == null)\n return;\n let c = this.accumulatedFirstMoment[a].variable, l = this.accumulatedWeightedInfNorm[a].variable, m = be(ne(c, this.beta1), ne(u, 1 - this.beta1)), d = ne(l, this.beta2), f = Yt(u), h = dd(d, f);\n c.assign(m), l.assign(h);\n let g = be(ne(He(n, o), He(m, be(h, this.epsilon))), i);\n i.assign(g);\n }), this.iteration.assign(be(this.iteration, 1)), this.accBeta1.assign(ne(this.accBeta1, this.beta1));\n }), this.incrementIterations();\n }\n dispose() {\n this.accBeta1.dispose(), this.iteration.dispose(), this.accumulatedFirstMoment != null && Ot(this.accumulatedFirstMoment.map((e) => e.variable)), this.accumulatedWeightedInfNorm != null && Ot(this.accumulatedWeightedInfNorm.map((e) => e.variable));\n }\n async getWeights() {\n throw new Error(\"getWeights() is not implemented for Adamax yet.\");\n }\n async setWeights(e) {\n throw new Error(\"setWeights() is not implemented for Adamax yet.\");\n }\n getConfig() {\n return { learningRate: this.learningRate, beta1: this.beta1, beta2: this.beta2, epsilon: this.epsilon, decay: this.decay };\n }\n static fromConfig(e, t10) {\n return new e(t10.learningRate, t10.beta1, t10.beta2, t10.epsilon, t10.decay);\n }\n};\nvar Pa = class extends wr {\n constructor(e) {\n super(), this.learningRate = e, this.setLearningRate(e);\n }\n static get className() {\n return \"SGD\";\n }\n applyGradients(e) {\n (Array.isArray(e) ? e.map((o) => o.name) : Object.keys(e)).forEach((o, n) => {\n let s = Array.isArray(e) ? e[n].tensor : e[o];\n if (s == null)\n return;\n let a = T.registeredVariables[o];\n Ee(() => {\n let i = be(ne(this.c, s), a);\n a.assign(i);\n });\n }), this.incrementIterations();\n }\n setLearningRate(e) {\n this.learningRate = e, this.c != null && this.c.dispose(), this.c = _r(Ce(-e));\n }\n dispose() {\n this.c.dispose();\n }\n async getWeights() {\n return [await this.saveIterations()];\n }\n async setWeights(e) {\n if (e = await this.extractIterations(e), e.length !== 0)\n throw new Error(\"SGD optimizer does not have settable weights.\");\n }\n getConfig() {\n return { learningRate: this.learningRate };\n }\n static fromConfig(e, t10) {\n return new e(t10.learningRate);\n }\n};\nvar wu = class extends Pa {\n constructor(e, t10, o = false) {\n super(e), this.learningRate = e, this.momentum = t10, this.useNesterov = o, this.accumulations = [], this.m = Ce(this.momentum);\n }\n static get className() {\n return \"Momentum\";\n }\n applyGradients(e) {\n (Array.isArray(e) ? e.map((o) => o.name) : Object.keys(e)).forEach((o, n) => {\n let s = T.registeredVariables[o];\n this.accumulations[n] == null && (this.accumulations[n] = { originalName: `${o}/momentum`, variable: Ee(() => Ut(s).variable(false)) });\n let a = this.accumulations[n].variable, i = Array.isArray(e) ? e[n].tensor : e[o];\n i != null && Ee(() => {\n let p, u = be(ne(this.m, a), i);\n this.useNesterov ? p = be(ne(this.c, be(i, ne(u, this.m))), s) : p = be(ne(this.c, u), s), a.assign(u), s.assign(p);\n });\n }), this.incrementIterations();\n }\n dispose() {\n this.m.dispose(), this.accumulations != null && Ot(this.accumulations.map((e) => e.variable));\n }\n setMomentum(e) {\n this.momentum = e;\n }\n async getWeights() {\n return [await this.saveIterations()].concat(this.accumulations.map((e) => ({ name: e.originalName, tensor: e.variable })));\n }\n async setWeights(e) {\n e = await this.extractIterations(e);\n let t10 = false;\n this.accumulations = e.map((o) => ({ originalName: o.name, variable: o.tensor.variable(t10) }));\n }\n getConfig() {\n return { learningRate: this.learningRate, momentum: this.momentum, useNesterov: this.useNesterov };\n }\n static fromConfig(e, t10) {\n return new e(t10.learningRate, t10.momentum, t10.useNesterov);\n }\n};\nvar Iu = class extends wr {\n constructor(e, t10 = 0.9, o = 0, n = null, s = false) {\n if (super(), this.learningRate = e, this.decay = t10, this.momentum = o, this.epsilon = n, this.accumulatedMeanSquares = [], this.accumulatedMoments = [], this.accumulatedMeanGrads = [], this.centered = s, n == null && (this.epsilon = T.backend.epsilon()), e == null)\n throw new Error(\"learningRate for RMSPropOptimizer must be defined.\");\n }\n static get className() {\n return \"RMSProp\";\n }\n applyGradients(e) {\n (Array.isArray(e) ? e.map((o) => o.name) : Object.keys(e)).forEach((o, n) => {\n let s = T.registeredVariables[o], a = false;\n this.accumulatedMeanSquares[n] == null && (this.accumulatedMeanSquares[n] = { originalName: `${o}/rms`, variable: Ee(() => Ut(s).variable(a)) }), this.accumulatedMoments[n] == null && (this.accumulatedMoments[n] = { originalName: `${o}/momentum`, variable: Ee(() => Ut(s).variable(a)) }), this.accumulatedMeanGrads[n] == null && this.centered && (this.accumulatedMeanGrads[n] = { originalName: `${o}/mg`, variable: Ee(() => Ut(s).variable(a)) });\n let i = Array.isArray(e) ? e[n].tensor : e[o];\n if (i == null)\n return;\n let p = this.accumulatedMeanSquares[n].variable, u = this.accumulatedMoments[n].variable;\n Ee(() => {\n let c = be(ne(p, this.decay), ne(Qt(i), 1 - this.decay));\n if (this.centered) {\n let l = this.accumulatedMeanGrads[n].variable, m = be(ne(l, this.decay), ne(i, 1 - this.decay)), d = He(ne(i, this.learningRate), $r(ke(c, be(Qt(m), this.epsilon)))), f = be(ne(u, this.momentum), d);\n p.assign(c), l.assign(m), u.assign(f);\n let h = ke(s, f);\n s.assign(h);\n } else {\n let l = be(ne(p, this.decay), ne(Qt(i), 1 - this.decay)), m = be(ne(u, this.momentum), He(ne(i, this.learningRate), $r(be(l, this.epsilon))));\n p.assign(l), u.assign(m);\n let d = ke(s, m);\n s.assign(d);\n }\n });\n }), this.incrementIterations();\n }\n dispose() {\n this.accumulatedMeanSquares != null && Ot(this.accumulatedMeanSquares.map((e) => e.variable)), this.accumulatedMeanGrads != null && this.centered && Ot(this.accumulatedMeanGrads.map((e) => e.variable)), this.accumulatedMoments != null && Ot(this.accumulatedMoments.map((e) => e.variable));\n }\n async getWeights() {\n let e = [...this.accumulatedMeanSquares, ...this.accumulatedMoments];\n return this.centered && e.push(...this.accumulatedMeanGrads), [await this.saveIterations()].concat(e.map((t10) => ({ name: t10.originalName, tensor: t10.variable })));\n }\n async setWeights(e) {\n e = await this.extractIterations(e);\n let t10 = this.centered ? e.length / 3 : e.length / 2, o = false;\n this.accumulatedMeanSquares = e.slice(0, t10).map((n) => ({ originalName: n.name, variable: n.tensor.variable(o) })), this.accumulatedMoments = e.slice(t10, t10 * 2).map((n) => ({ originalName: n.name, variable: n.tensor.variable(o) })), this.centered && (this.accumulatedMeanGrads = e.slice(t10 * 2, t10 * 3).map((n) => ({ originalName: n.name, variable: n.tensor.variable(o) })));\n }\n getConfig() {\n return { learningRate: this.learningRate, decay: this.decay, momentum: this.momentum, epsilon: this.epsilon, centered: this.centered };\n }\n static fromConfig(e, t10) {\n return new e(t10.learningRate, t10.decay, t10.momentum, t10.epsilon, t10.centered);\n }\n};\nvar sK = [yu, bu, Cu, Su, wu, Iu, Pa];\nfunction nN() {\n for (let r of sK)\n IC(r);\n}\nvar La = {};\nGe(La, { browserFiles: () => aN, browserHTTPRequest: () => pN, concatenateArrayBuffers: () => Fp, copyModel: () => V0, decodeWeights: () => Bm, encodeWeights: () => v0, fromMemory: () => cN, fromMemorySync: () => $C, getLoadHandlers: () => E0, getModelArtifactsForJSON: () => Op, getModelArtifactsForJSONSync: () => Qb, getModelArtifactsInfoForJSON: () => Ms, getSaveHandlers: () => $0, getWeightSpecs: () => zm, http: () => Vd, isHTTPScheme: () => Bd, listModels: () => L0, loadWeights: () => iN, moveModel: () => z0, registerLoadRouter: () => _0, registerSaveRouter: () => T0, removeModel: () => B0, weightsLoaderFactory: () => TC, withSaveHandler: () => lN, withSaveHandlerSync: () => mN });\nvar aK = \"model\";\nvar iK = \".json\";\nvar uK = \".weights.bin\";\nfunction sN(r) {\n return new Promise((e) => setTimeout(e)).then(r);\n}\nvar Ma = class {\n constructor(e) {\n if (!O().getBool(\"IS_BROWSER\"))\n throw new Error(\"browserDownloads() cannot proceed because the current environment is not a browser.\");\n e.startsWith(Ma.URL_SCHEME) && (e = e.slice(Ma.URL_SCHEME.length)), (e == null || e.length === 0) && (e = aK), this.modelJsonFileName = e + iK, this.weightDataFileName = e + uK;\n }\n async save(e) {\n if (typeof document == \"undefined\")\n throw new Error(\"Browser downloads are not supported in this environment since `document` is not present\");\n let t10 = window.URL.createObjectURL(new Blob([e.weightData], { type: \"application/octet-stream\" }));\n if (e.modelTopology instanceof ArrayBuffer)\n throw new Error(\"BrowserDownloads.save() does not support saving model topology in binary formats yet.\");\n {\n let o = [{ paths: [\"./\" + this.weightDataFileName], weights: e.weightSpecs }], n = Vm(e, o), s = window.URL.createObjectURL(new Blob([JSON.stringify(n)], { type: \"application/json\" })), a = this.modelJsonAnchor == null ? document.createElement(\"a\") : this.modelJsonAnchor;\n if (a.download = this.modelJsonFileName, a.href = s, await sN(() => a.dispatchEvent(new MouseEvent(\"click\"))), e.weightData != null) {\n let i = this.weightDataAnchor == null ? document.createElement(\"a\") : this.weightDataAnchor;\n i.download = this.weightDataFileName, i.href = t10, await sN(() => i.dispatchEvent(new MouseEvent(\"click\")));\n }\n return { modelArtifactsInfo: Ms(e) };\n }\n }\n};\nMa.URL_SCHEME = \"downloads://\";\nvar vC = class {\n constructor(e) {\n if (e == null || e.length < 1)\n throw new Error(`When calling browserFiles, at least 1 file is required, but received ${e}`);\n this.jsonFile = e[0], this.weightsFiles = e.slice(1);\n }\n async load() {\n return new Promise((e, t10) => {\n let o = new FileReader();\n o.onload = (n) => {\n let s = JSON.parse(n.target.result), a = s.modelTopology;\n if (a == null) {\n t10(new Error(`modelTopology field is missing from file ${this.jsonFile.name}`));\n return;\n }\n if (s.weightsManifest == null) {\n t10(new Error(`weightManifest field is missing from file ${this.jsonFile.name}`));\n return;\n }\n if (this.weightsFiles.length === 0) {\n e({ modelTopology: a });\n return;\n }\n let p = Op(s, (u) => this.loadWeights(u));\n e(p);\n }, o.onerror = (n) => t10(`Failed to read model topology and weights manifest JSON from file '${this.jsonFile.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`), o.readAsText(this.jsonFile);\n });\n }\n loadWeights(e) {\n let t10 = [], o = [];\n for (let a of e)\n t10.push(...a.weights), o.push(...a.paths);\n let n = this.checkManifestAndWeightFiles(e), s = o.map((a) => this.loadWeightsFile(a, n[a]));\n return Promise.all(s).then((a) => [t10, Fp(a)]);\n }\n loadWeightsFile(e, t10) {\n return new Promise((o, n) => {\n let s = new FileReader();\n s.onload = (a) => {\n let i = a.target.result;\n o(i);\n }, s.onerror = (a) => n(`Failed to weights data from file of path '${e}'.`), s.readAsArrayBuffer(t10);\n });\n }\n checkManifestAndWeightFiles(e) {\n let t10 = [], o = this.weightsFiles.map((s) => Yb(s.name)), n = {};\n for (let s of e)\n s.paths.forEach((a) => {\n let i = Yb(a);\n if (t10.indexOf(i) !== -1)\n throw new Error(`Duplicate file basename found in weights manifest: '${i}'`);\n if (t10.push(i), o.indexOf(i) === -1)\n throw new Error(`Weight file with basename '${i}' is not provided.`);\n n[a] = this.weightsFiles[o.indexOf(i)];\n });\n if (t10.length !== this.weightsFiles.length)\n throw new Error(`Mismatch in the number of files in weights manifest (${t10.length}) and the number of weight files provided (${this.weightsFiles.length}).`);\n return n;\n }\n};\nvar pK = (r) => O().getBool(\"IS_BROWSER\") && !Array.isArray(r) && r.startsWith(Ma.URL_SCHEME) ? cK(r.slice(Ma.URL_SCHEME.length)) : null;\nmt.registerSaveRouter(pK);\nfunction cK(r = \"model\") {\n return new Ma(r);\n}\nfunction aN(r) {\n return new vC(r);\n}\nfunction kC(r, e, t10, o) {\n a(r), t10 = t10 == null ? 0 : t10, o = o == null ? 1 : o, i(t10, o);\n let n = 0, s = (p) => (p.then((u) => {\n let c = t10 + ++n / r.length * (o - t10);\n return e(c), u;\n }), p);\n function a(p) {\n $(p != null && Array.isArray(p) && p.length > 0, () => \"promises must be a none empty array\");\n }\n function i(p, u) {\n $(p >= 0 && p <= 1, () => `Progress fraction must be in range [0, 1], but got startFraction ${p}`), $(u >= 0 && u <= 1, () => `Progress fraction must be in range [0, 1], but got endFraction ${u}`), $(u >= p, () => `startFraction must be no more than endFraction, but got startFraction ${p} and endFraction ${u}`);\n }\n return Promise.all(r.map(s));\n}\nasync function NC(r, e) {\n e == null && (e = {});\n let t10 = e.fetchFunc == null ? O().platform.fetch : e.fetchFunc, o = r.map((l) => t10(l, e.requestInit, { isBinary: true })), n = 0, s = 0.5, i = (e.onProgress == null ? await Promise.all(o) : await kC(o, e.onProgress, n, s)).map((l) => l.arrayBuffer()), p = 0.5, u = 1;\n return e.onProgress == null ? await Promise.all(i) : await kC(i, e.onProgress, p, u);\n}\nasync function iN(r, e = \"\", t10, o) {\n return TC((a) => NC(a, { requestInit: o }))(r, e, t10);\n}\nfunction TC(r) {\n return async (e, t10 = \"\", o) => {\n let n = e.map(() => false), s = {}, a = o != null ? o.map(() => false) : [], i = [];\n if (e.forEach((d, f) => {\n let h = 0;\n d.weights.forEach((g) => {\n let x = \"quantization\" in g ? g.quantization.dtype : g.dtype, b = Zc[x] * We(g.shape), C = () => {\n n[f] = true, s[f] == null && (s[f] = []), s[f].push({ manifestEntry: g, groupOffset: h, sizeBytes: b });\n };\n o != null ? o.forEach((w, k) => {\n w === g.name && (C(), a[k] = true);\n }) : C(), i.push(g.name), h += b;\n });\n }), !a.every((d) => d)) {\n let d = o.filter((f, h) => !a[h]);\n throw new Error(`Could not find weights in manifest with names: ${d.join(\", \")}. \nManifest JSON has weights with names: ${i.join(\", \")}.`);\n }\n let p = n.reduce((d, f, h) => (f && d.push(h), d), []), u = [];\n p.forEach((d) => {\n e[d].paths.forEach((f) => {\n let h = t10 + (t10.endsWith(\"/\") ? \"\" : \"/\") + f;\n u.push(h);\n });\n });\n let c = await r(u), l = {}, m = 0;\n return p.forEach((d) => {\n let f = e[d].paths.length, h = 0;\n for (let w = 0; w < f; w++)\n h += c[m + w].byteLength;\n let g = new ArrayBuffer(h), x = new Uint8Array(g), b = 0;\n for (let w = 0; w < f; w++) {\n let k = new Uint8Array(c[m + w]);\n x.set(k, b), b += k.byteLength;\n }\n s[d].forEach((w) => {\n let k = g.slice(w.groupOffset, w.groupOffset + w.sizeBytes), _ = Bm(k, [w.manifestEntry]);\n for (let E in _)\n l[E] = _[E];\n }), m += f;\n }), l;\n };\n}\nvar lK = \"application/octet-stream\";\nvar mK = \"application/json\";\nvar ul = class {\n constructor(e, t10) {\n if (this.DEFAULT_METHOD = \"POST\", t10 == null && (t10 = {}), this.weightPathPrefix = t10.weightPathPrefix, this.onProgress = t10.onProgress, this.weightUrlConverter = t10.weightUrlConverter, t10.fetchFunc != null ? ($(typeof t10.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 = t10.fetchFunc) : this.fetch = O().platform.fetch, $(e != null && e.length > 0, () => \"URL path for http must not be null, undefined or empty.\"), Array.isArray(e) && $(e.length === 2, () => `URL paths for http must have a length of 2, (actual length is ${e.length}).`), this.path = e, t10.requestInit != null && t10.requestInit.body != null)\n throw new Error(\"requestInit is expected to have no pre-existing body, but has one.\");\n this.requestInit = t10.requestInit || {};\n }\n async save(e) {\n if (e.modelTopology instanceof ArrayBuffer)\n throw new Error(\"BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.\");\n let t10 = Object.assign({ method: this.DEFAULT_METHOD }, this.requestInit);\n t10.body = new FormData();\n let o = [{ paths: [\"./model.weights.bin\"], weights: e.weightSpecs }], n = Vm(e, o);\n t10.body.append(\"model.json\", new Blob([JSON.stringify(n)], { type: mK }), \"model.json\"), e.weightData != null && t10.body.append(\"model.weights.bin\", new Blob([e.weightData], { type: lK }), \"model.weights.bin\");\n let s = await this.fetch(this.path, t10);\n if (s.ok)\n return { modelArtifactsInfo: Ms(e), responses: [s] };\n throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${s.status}.`);\n }\n async load() {\n let e = await this.fetch(this.path, this.requestInit);\n if (!e.ok)\n throw new Error(`Request to ${this.path} failed with status code ${e.status}. Please verify this URL points to the model JSON of the model to load.`);\n let t10;\n try {\n t10 = await e.json();\n } catch (s) {\n let a = `Failed to parse model JSON of response from ${this.path}.`;\n throw this.path.endsWith(\".pb\") ? a += \" 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.\" : a += \" Please make sure the server is serving valid JSON for this request.\", new Error(a);\n }\n let o = t10.modelTopology, n = t10.weightsManifest;\n if (o == null && n == null)\n throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);\n return Op(t10, (s) => this.loadWeights(s));\n }\n async loadWeights(e) {\n let t10 = Array.isArray(this.path) ? this.path[1] : this.path, [o, n] = dK(t10), s = this.weightPathPrefix || o, a = zm(e), i = [], p = [];\n for (let c of e)\n for (let l of c.paths)\n this.weightUrlConverter != null ? p.push(this.weightUrlConverter(l)) : i.push(s + l + n);\n this.weightUrlConverter && i.push(...await Promise.all(p));\n let u = await NC(i, { requestInit: this.requestInit, fetchFunc: this.fetch, onProgress: this.onProgress });\n return [a, Fp(u)];\n }\n};\nul.URL_SCHEME_REGEX = /^https?:\\/\\//;\nfunction dK(r) {\n let e = r.lastIndexOf(\"/\"), t10 = r.lastIndexOf(\"?\"), o = r.substring(0, e), n = t10 > e ? r.substring(t10) : \"\";\n return [o + \"/\", n];\n}\nfunction Bd(r) {\n return r.match(ul.URL_SCHEME_REGEX) != null;\n}\nvar uN = (r, e) => {\n if (typeof fetch == \"undefined\" && (e == null || e.fetchFunc == null))\n return null;\n {\n let t10 = true;\n if (Array.isArray(r) ? t10 = r.every((o) => Bd(o)) : t10 = Bd(r), t10)\n return Vd(r, e);\n }\n return null;\n};\nmt.registerSaveRouter(uN);\nmt.registerLoadRouter(uN);\nfunction Vd(r, e) {\n return new ul(r, e);\n}\nfunction pN(r, e) {\n return Vd(r, e);\n}\nvar pl = class {\n constructor(e) {\n this.modelArtifacts = e;\n }\n load() {\n return this.modelArtifacts;\n }\n};\nvar zd = class {\n constructor(e) {\n this.saveHandler = e;\n }\n save(e) {\n return this.saveHandler(e);\n }\n};\nvar _C = class {\n constructor(e) {\n e.load && (this.load = () => Promise.resolve(e.load())), e.save && (this.save = (t10) => Promise.resolve(e.save(t10)));\n }\n};\nfunction cN(r, e, t10, o) {\n let n = arguments;\n return new _C($C(...n));\n}\nfunction $C(r, e, t10, o) {\n return arguments.length === 1 ? r.modelTopology != null || r.weightSpecs != null ? new pl(r) : (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 pl({ modelTopology: r })) : (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 pl({ modelTopology: r, weightSpecs: e, weightData: t10, trainingConfig: o }));\n}\nfunction lN(r) {\n return new zd(r);\n}\nfunction mN(r) {\n return new zd(r);\n}\nvar fN = {};\nGe(fN, { confusionMatrix: () => dN });\nfunction fK(r, e, t10) {\n let o = v(r, \"labels\", \"confusionMatrix\"), n = v(e, \"predictions\", \"confusionMatrix\");\n $(t10 == null || t10 > 0 && Number.isInteger(t10), () => `If provided, numClasses must be a positive integer, but got ${t10}`), $(o.rank === 1, () => `Expected the rank of labels to be 1, but got ${o.rank}`), $(n.rank === 1, () => `Expected the rank of predictions to be 1, but got ${n.rank}`), $(o.shape[0] === n.shape[0], () => `Mismatch in the number of examples: ${o.shape[0]} vs. ${n.shape[0]}. Labels and predictions should have the same number of elements.`), $(t10 > 0 && Number.isInteger(t10), () => `numClasses is required to be a positive integer, but got ${t10}`);\n let s = nl(je(o, \"int32\"), t10), a = nl(je(n, \"int32\"), t10), i = Gp(s), p = Xe(i, a);\n return je(p, \"int32\");\n}\nvar dN = N({ confusionMatrix_: fK });\nvar gN = {};\nGe(gN, { fromPixels: () => SK, fromPixelsAsync: () => bK, toPixels: () => CK });\nvar vu;\nfunction hN(r, e = 3) {\n if (e > 4)\n throw new Error(\"Cannot construct Tensor with more than 4 channels from pixels.\");\n if (r == null)\n throw new Error(\"pixels passed to tf.browser.fromPixels() can not be null\");\n let t10 = false, o = false, n = false, s = false, a = false, i = false;\n if (r.data instanceof Uint8Array)\n t10 = true;\n else if (typeof ImageData != \"undefined\" && r instanceof ImageData)\n o = true;\n else if (typeof HTMLVideoElement != \"undefined\" && r instanceof HTMLVideoElement)\n n = true;\n else if (typeof HTMLImageElement != \"undefined\" && r instanceof HTMLImageElement)\n s = true;\n else if (r.getContext != null)\n a = true;\n else if (typeof ImageBitmap != \"undefined\" && r instanceof ImageBitmap)\n i = true;\n else\n 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 ${r.constructor.name}`);\n if (Kc(Zi, T.backendName) != null) {\n let f = { pixels: r }, h = { numChannels: e };\n return T.runKernel(Zi, f, h);\n }\n let [u, c] = n ? [r.videoWidth, r.videoHeight] : [r.width, r.height], l;\n if (a)\n l = r.getContext(\"2d\").getImageData(0, 0, u, c).data;\n else if (o || t10)\n l = r.data;\n else if (s || n || i) {\n if (vu == null)\n if (typeof document == \"undefined\")\n if (typeof OffscreenCanvas != \"undefined\" && typeof OffscreenCanvasRenderingContext2D != \"undefined\")\n vu = new OffscreenCanvas(1, 1).getContext(\"2d\");\n else\n throw new Error(\"Cannot parse input in current context. Reason: OffscreenCanvas Context2D rendering is not supported.\");\n else\n vu = document.createElement(\"canvas\").getContext(\"2d\", { willReadFrequently: true });\n vu.canvas.width = u, vu.canvas.height = c, vu.drawImage(r, 0, 0, u, c), l = vu.getImageData(0, 0, u, c).data;\n }\n let m;\n if (e === 4)\n m = new Int32Array(l);\n else {\n let f = u * c;\n m = new Int32Array(f * e);\n for (let h = 0; h < f; h++)\n for (let g = 0; g < e; ++g)\n m[h * e + g] = l[h * 4 + g];\n }\n return Ed(m, [c, u, e], \"int32\");\n}\nfunction hK(r) {\n return r != null && r.data instanceof Uint8Array;\n}\nfunction gK() {\n return typeof window != \"undefined\" && typeof ImageBitmap != \"undefined\" && window.hasOwnProperty(\"createImageBitmap\");\n}\nfunction xK(r) {\n return r != null && r.width !== 0 && r.height !== 0;\n}\nfunction yK(r) {\n return gK() && !(r instanceof ImageBitmap) && xK(r) && !hK(r);\n}\nasync function bK(r, e = 3) {\n let t10 = null;\n if (O().getBool(\"WRAP_TO_IMAGEBITMAP\") && yK(r)) {\n let o;\n try {\n o = await createImageBitmap(r, { premultiplyAlpha: \"none\" });\n } catch (n) {\n o = null;\n }\n o != null && o.width === r.width && o.height === r.height ? t10 = o : t10 = r;\n } else\n t10 = r;\n return hN(t10, e);\n}\nasync function CK(r, e) {\n let t10 = v(r, \"img\", \"toPixels\");\n if (!(r instanceof it)) {\n let u = t10;\n t10 = je(u, \"int32\"), u.dispose();\n }\n if (t10.rank !== 2 && t10.rank !== 3)\n throw new Error(`toPixels only supports rank 2 or 3 tensors, got rank ${t10.rank}.`);\n let [o, n] = t10.shape.slice(0, 2), s = t10.rank === 2 ? 1 : t10.shape[2];\n if (s > 4 || s === 2)\n throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${s}`);\n if (t10.dtype !== \"float32\" && t10.dtype !== \"int32\")\n throw new Error(`Unsupported type for toPixels: ${t10.dtype}. Please use float32 or int32 tensors.`);\n let a = await t10.data(), i = t10.dtype === \"float32\" ? 255 : 1, p = new Uint8ClampedArray(n * o * 4);\n for (let u = 0; u < o * n; ++u) {\n let c = [0, 0, 0, 255];\n for (let m = 0; m < s; m++) {\n let d = a[u * s + m];\n if (t10.dtype === \"float32\") {\n if (d < 0 || d > 1)\n throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${d}.`);\n } else if (t10.dtype === \"int32\" && (d < 0 || d > 255))\n throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${d}.`);\n s === 1 ? (c[0] = d * i, c[1] = d * i, c[2] = d * i) : c[m] = d * i;\n }\n let l = u * 4;\n p[l + 0] = Math.round(c[0]), p[l + 1] = Math.round(c[1]), p[l + 2] = Math.round(c[2]), p[l + 3] = Math.round(c[3]);\n }\n if (e != null) {\n e.width = n, e.height = o;\n let u = e.getContext(\"2d\"), c = new ImageData(p, n, o);\n u.putImageData(c, 0, 0);\n }\n return t10 !== r && t10.dispose(), p;\n}\nvar SK = N({ fromPixels_: hN });\nvar Wd = {};\nGe(Wd, { prepareAndValidate: () => xN });\nfunction xN(r, e) {\n let t10 = r.shape.length, o = e.shape.length;\n if (t10 < 1)\n throw new Error(`tf.gatherND() expects the input to be rank 1 or higher, but the rank was ${t10}.`);\n if (o < 1)\n throw new Error(`tf.gatherND() expects the indices to be rank 1 or higher, but the rank was ${o}.`);\n if (e.dtype !== \"int32\")\n throw new Error(`tf.gatherND() expects the indices to be int32 type, but the dtype was ${e.dtype}.`);\n if (e.shape[o - 1] > t10)\n throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${e.shape[o - 1]} vs. ${t10}`);\n if (We(r.shape) === 0)\n throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${r.shape}.`);\n let n = e.shape, s = n[n.length - 1], a = 1;\n for (let l = 0; l < n.length - 1; ++l)\n a *= n[l];\n let i = r.shape, p = n.slice();\n p.pop();\n let u = 1;\n for (let l = s; l < t10; ++l)\n u *= i[l], p.push(i[l]);\n let c = [...xs(r.shape).map((l) => l / u), 1].slice(0, s);\n return [p, a, u, c];\n}\nvar ut = {};\nGe(ut, { assertParamsValid: () => IK, computeFlatOffset: () => _K, computeOutShape: () => kK, getNormalizedAxes: () => NK, isSliceContinous: () => TK, maskToAxes: () => vK, parseSliceParams: () => $K, sliceInfo: () => EK, startForAxis: () => kN, startIndicesWithElidedDims: () => wN, stopForAxis: () => NN, stopIndicesWithElidedDims: () => IN, stridesForAxis: () => vN, stridesWithElidedDims: () => bN });\nvar EC = -2;\nvar wK = -1;\nfunction IK(r, e, t10) {\n let o = r.shape.length;\n $(o === e.length, () => `Error in slice${o}D: Length of begin ${e} must match the rank of the array (${o}).`), $(o === t10.length, () => `Error in slice${o}D: Length of size ${t10} must match the rank of the array (${o}).`);\n for (let n = 0; n < o; ++n)\n $(e[n] + t10[n] <= r.shape[n], () => `Error in slice${o}D: begin[${n}] + size[${n}] (${e[n] + t10[n]}) would overflow input.shape[${n}] (${r.shape[n]})`);\n}\nfunction vK(r) {\n let e = [], t10 = 0;\n for (; r > 0; )\n r & 1 && e.push(t10), r /= 2, t10++;\n return e;\n}\nfunction kK(r, e, t10) {\n let o = [];\n for (let n = 0; n < r.length; n++)\n o[n] = Math.ceil((e[n] - r[n]) / t10[n]);\n return o;\n}\nfunction bN(r, e, t10, o) {\n let n = [...r];\n for (let s = n.length; s < o.length; s++)\n n.push(1);\n for (let s = 0; s < t10; s++)\n s === 0 ? n[e] = 1 : (n.splice(e, 0, 1), n.pop());\n return n;\n}\nfunction CN(r, e, t10) {\n return t10 <= r ? t10 : t10 - (e - 1);\n}\nfunction SN(r, e) {\n let t10 = [];\n for (let o = 0; o < r; o++)\n t10.push(e + o);\n return t10;\n}\nfunction NK(r, e, t10, o, n, s, a, i, p) {\n let u = r.length, c = new Array(u), l = new Array(u), m = new Array(u);\n if (e.length && t10 > 0) {\n let d = e[0], f = t10 + 1;\n c = wN(a, d, f, o, r), l = IN(i, d, f, n, r), m = bN(s, d, f, r);\n } else\n for (let d = 0; d < u; d++)\n c[d] = kN(a, o, s, r, d, p), l[d] = NN(i, n, s, r, d, p), m[d] = vN(s, d, p);\n return { begin: c, end: l, strides: m };\n}\nfunction wN(r, e, t10, o, n) {\n let s = [...n], a = SN(t10, e);\n for (let i = 0; i < s.length; i++)\n if (a.indexOf(i) > -1)\n s[i] = 0;\n else {\n let p = CN(e, t10, i), u = o[p];\n r & 1 << p && (u = 0), s[i] = u;\n }\n return s;\n}\nfunction IN(r, e, t10, o, n) {\n let s = [...n], a = SN(t10, e);\n for (let i = 0; i < s.length; i++)\n if (a.indexOf(i) > -1)\n s[i] = Number.MAX_SAFE_INTEGER;\n else {\n let p = CN(e, t10, i), u = o[p];\n r & 1 << p && (u = Number.MAX_SAFE_INTEGER), s[i] = u;\n }\n for (let i = 0; i < s.length; i++) {\n let p = n[i];\n s[i] < 0 && (s[i] += p), s[i] = ip(0, s[i], n[i]);\n }\n return s;\n}\nfunction vN(r, e, t10) {\n let o = r[e];\n return (t10 & 1 << e || o == null) && (o = 1), o;\n}\nfunction kN(r, e, t10, o, n, s) {\n let a = e[n], i = t10[n] || 1;\n (r & 1 << n || s & 1 << n || a == null) && (i > 0 ? a = Number.MIN_SAFE_INTEGER : a = Number.MAX_SAFE_INTEGER);\n let p = o[n];\n return a < 0 && (a += p), a = ip(0, a, p - 1), a;\n}\nfunction NN(r, e, t10, o, n, s) {\n let a = e[n], i = t10[n] || 1;\n (r & 1 << n || s & 1 << n || a == null) && (i > 0 ? a = Number.MAX_SAFE_INTEGER : a = Number.MIN_SAFE_INTEGER);\n let p = o[n];\n return a < 0 && (a += p), i > 0 ? a = ip(0, a, p) : a = ip(-1, a, p - 1), a;\n}\nfunction TK(r, e, t10) {\n let o = t10.length;\n for (let n = 0; n < t10.length; n++)\n if (t10[n] > 1) {\n o = n;\n break;\n }\n for (let n = o + 1; n < t10.length; n++)\n if (e[n] > 0 || t10[n] !== r[n])\n return false;\n return true;\n}\nfunction _K(r, e) {\n let t10 = r.length > 0 ? r[r.length - 1] : 1;\n for (let o = 0; o < r.length - 1; o++)\n t10 += r[o] * e[o];\n return t10;\n}\nfunction $K(r, e, t10) {\n let o, n = r.shape.length;\n typeof e == \"number\" ? o = [e, ...new Array(n - 1).fill(0)] : e.length < n ? o = e.concat(new Array(n - e.length).fill(0)) : o = e.slice(), o.forEach((a) => {\n $(a !== -1, () => \"slice() does not support negative begin indexing.\");\n });\n let s;\n return t10 == null ? s = new Array(n).fill(-1) : typeof t10 == \"number\" ? s = [t10, ...new Array(n - 1).fill(-1)] : t10.length < n ? s = t10.concat(new Array(n - t10.length).fill(-1)) : s = t10, s = s.map((a, i) => a >= 0 ? a : ($(a === -1, () => `Negative size values should be exactly -1 but got ${a} for the slice() size at index ${i}.`), r.shape[i] - o[i])), [o, s];\n}\nfunction EK(r, e, t10, o, n, s, a, i, p) {\n let u;\n if (o == null ? (u = new Array(e.length), u.fill(1)) : u = o, a != null && a & a - 1)\n throw new Error(\"Multiple ellipses in slice is not allowed.\");\n let c = false, l = { dims: u.length, numAddAxisAfterEllipsis: 0, begin: e.slice(), end: t10.slice(), strides: u.slice(), beginMask: n, endMask: s, ellipsisMask: a, newAxisMask: i, shrinkAxisMask: p };\n for (let C = 0; C < l.dims; C++)\n c && 1 << C & i && l.numAddAxisAfterEllipsis++, 1 << C & a && (c = true);\n c || (l.ellipsisMask |= 1 << l.dims, l.dims++);\n let m = { dims: r.length, beginMask: 0, endMask: 0, beginValid: false, endValid: false };\n AK(l, m);\n let d = true, f = true, h = true, g = [], x = [];\n for (let C = 0; C < r.length; ++C) {\n if (m.strides[C] === 0)\n throw Error(`strides[${C}] must be non-zero`);\n let w = !!(m.shrinkAxisMask & 1 << C), k = r[C];\n if (k === -1) {\n g.push(w ? 1 : -1);\n continue;\n }\n let _ = [m.beginMask & 1 << C, m.endMask & 1 << C], E = [m.strides[C] > 0 ? 0 : -1, m.strides[C] > 0 ? k : k - 1];\n if (w && m.strides[C] <= 0)\n throw Error(\"only stride 1 allowed on non-range indexing.\");\n h = h && m.strides[C] === 1;\n let A = !!(m.beginMask & 1 << C && m.endMask & 1 << C);\n if (m.beginValid && m.endValid) {\n if (w) {\n let M = m.begin[C] < 0 ? k + m.begin[C] : m.begin[C];\n if (m.begin[C] = M, m.end[C] = m.begin[C] + 1, M < 0 || M >= k)\n throw Error(`slice index ${m.begin[C]} of dimension ${C} out of bounds.`);\n } else\n m.begin[C] = yN(m.begin[C], 0, m.strides[C], k, _, E), m.end[C] = yN(m.end[C], 1, m.strides[C], k, _, E);\n let P = m.strides[C] === 1 && m.begin[C] === 0 && m.end[C] === k;\n d = d && P, f = f && (C === 0 && m.strides[C] === 1 || P);\n } else\n d = d && m.strides[C] === 1 && A, f = f && (C === 0 && m.strides[C] === 1 || A);\n let R, D = false;\n if (m.beginValid && m.endValid ? (R = m.end[C] - m.begin[C], D = true) : w ? (R = 1, D = true) : A && k >= 0 && (m.strides[C] < 0 ? R = -k : R = k, D = true), D) {\n let P;\n R === 0 || R < 0 != m.strides[C] < 0 ? P = 0 : P = Math.trunc(R / m.strides[C]) + (R % m.strides[C] !== 0 ? 1 : 0), g.push(P);\n } else\n g.push(-1);\n }\n for (let C = 0; C < m.finalShapeGatherIndices.length; ++C) {\n let w = m.finalShapeGatherIndices[C];\n w >= 0 ? x.push(g[w]) : w === EC && x.push(1);\n }\n return { finalShapeSparse: x.filter((C, w) => m.finalShapeGatherIndices[w] !== EC), finalShape: x, isIdentity: d, sliceDim0: f, isSimpleSlice: h, begin: m.begin, end: m.end, strides: m.strides };\n}\nfunction AK(r, e) {\n e.beginMask = 0, e.endMask = 0, e.shrinkAxisMask = 0;\n let t10 = 0;\n e.beginValid = r.begin != null, e.endValid = r.end != null, e.begin = new Array(e.dims), e.end = new Array(e.dims), e.strides = new Array(e.dims), e.finalShapeGatherIndices = [], e.finalShapeGatherIndicesSparse = [], e.inputShapeGatherIndicesSparse = new Array(e.dims);\n for (let o = 0; o < r.dims; o++)\n if (1 << o & r.ellipsisMask) {\n let n = Math.min(e.dims - (r.dims - o) + 1 + r.numAddAxisAfterEllipsis, e.dims);\n for (; t10 < n; t10++)\n e.begin[t10] = 0, e.end[t10] = 0, e.strides[t10] = 1, e.beginMask |= 1 << t10, e.endMask |= 1 << t10, e.finalShapeGatherIndices.push(t10), e.finalShapeGatherIndicesSparse.push(-1), e.inputShapeGatherIndicesSparse[t10] = o;\n } else if (1 << o & r.newAxisMask)\n e.finalShapeGatherIndices.push(EC), e.finalShapeGatherIndicesSparse.push(-1);\n else {\n if (t10 === e.begin.length)\n throw Error(`Index out of range using input dim ${t10}; input has only ${e.dims} dims, ${e.begin.length}.`);\n r.begin != null && (e.begin[t10] = r.begin[o]), r.end != null && (e.end[t10] = r.end[o]), e.strides[t10] = r.strides[o], r.beginMask & 1 << o && (e.beginMask |= 1 << t10), r.endMask & 1 << o && (e.endMask |= 1 << t10), r.shrinkAxisMask & 1 << o ? (e.finalShapeGatherIndices.push(wK), e.finalShapeGatherIndicesSparse.push(-1), e.shrinkAxisMask |= 1 << t10) : (e.finalShapeGatherIndices.push(t10), e.finalShapeGatherIndicesSparse.push(o)), e.inputShapeGatherIndicesSparse[t10] = o, t10++;\n }\n}\nfunction yN(r, e, t10, o, n, s) {\n if (n[e])\n return t10 > 0 ? s[e] : s[e + 1 & 1];\n {\n let a = r < 0 ? o + r : r;\n return a < s[0] ? s[0] : a > s[1] ? s[1] : a;\n }\n}\nvar RK = \"4.2.0\";\nvar cl = class {\n static sgd(e) {\n return new Pa(e);\n }\n static momentum(e, t10, o = false) {\n return new wu(e, t10, o);\n }\n static rmsprop(e, t10 = 0.9, o = 0, n = null, s = false) {\n return new Iu(e, t10, o, n, s);\n }\n static adam(e = 1e-3, t10 = 0.9, o = 0.999, n = null) {\n return new Cu(e, t10, o, n);\n }\n static adadelta(e = 1e-3, t10 = 0.95, o = null) {\n return new yu(e, t10, o);\n }\n static adamax(e = 2e-3, t10 = 0.9, o = 0.999, n = null, s = 0) {\n return new Su(e, t10, o, n, s);\n }\n static adagrad(e, t10 = 0.1) {\n return new bu(e, t10);\n }\n};\nvar YMe = cl;\nvar DK = (() => typeof requestAnimationFrame != \"undefined\" ? requestAnimationFrame : typeof setImmediate != \"undefined\" ? setImmediate : (r) => r())();\nfunction AC() {\n return new Promise((r) => DK(() => r()));\n}\nvar S = {};\nGe(S, { ERF_A1: () => YK, ERF_A2: () => QK, ERF_A3: () => ZK, ERF_A4: () => JK, ERF_A5: () => eq, ERF_P: () => XK, PARALLELIZE_THRESHOLD: () => Ud, RowPartitionType: () => js, SELU_SCALE: () => jK, SELU_SCALEALPHA: () => qK, applyActivation: () => gu, assertAndGetBroadcastShape: () => Je, assertAxesAreInnerMostDims: () => dU, assertParamsConsistent: () => FK, assignToTypedArray: () => aq, axesAreInnerMostDims: () => uC, calculateShapes: () => l1, checkEinsumDimSizes: () => mq, checkPadOnDimRoundingMode: () => Mt, combineLocations: () => Ov, combineRaggedTensorToTensorShapes: () => PK, complexWithEvenIndex: () => oq, complexWithOddIndex: () => nq, computeConv2DInfo: () => au, computeConv3DInfo: () => rv, computeDefaultPad: () => iC, computeDilation2DInfo: () => dW, computeOptimalWindowSize: () => VK, computeOutAndReduceShapes: () => mU, computeOutShape: () => OK, computePool2DInfo: () => aC, computePool3DInfo: () => fW, convertConv2DDataFormat: () => ov, decodeEinsumEquation: () => cq, eitherStridesOrDilationsAreOne: () => mr, expandShapeToKeepDim: () => Ea, exponent: () => uq, exponents: () => iq, fromStringArrayToUint8: () => Dq, fromUint8ToStringArray: () => Rq, getAxesPermutation: () => fU, getBroadcastDims: () => Ev, getComplexWithIndex: () => sq, getEinsumComputePath: () => dq, getEinsumPermutation: () => lq, getFusedBiasGradient: () => hu, getFusedDyActivation: () => fu, getImageCenter: () => zK, getInnerMostAxes: () => gU, getPermuted: () => UK, getRaggedRank: () => LK, getReductionAxes: () => Qm, getReshaped: () => WK, getReshapedPermuted: () => GK, getRowPartitionTypesHelper: () => MK, getSliceBeginCoords: () => HK, getSliceSize: () => KK, getSparseFillEmptyRowsIndicesDenseShapeMismatch: () => xq, getSparseFillEmptyRowsNegativeIndexErrorMessage: () => yq, getSparseFillEmptyRowsOutOfRangeIndexErrorMessage: () => bq, getSparseReshapeEmptyTensorZeroOutputDimErrorMessage: () => wq, getSparseReshapeInputOutputMismatchErrorMessage: () => vq, getSparseReshapeInputOutputMultipleErrorMessage: () => Iq, getSparseReshapeMultipleNegativeOneOutputDimErrorMessage: () => Cq, getSparseReshapeNegativeOutputDimErrorMessage: () => Sq, getSparseSegmentReductionIndicesOutOfRangeErrorMessage: () => _q, getSparseSegmentReductionNegativeSegmentIdsErrorMessage: () => kq, getSparseSegmentReductionNonIncreasingSegmentIdsErrorMessage: () => Nq, getSparseSegmentReductionSegmentIdOutOfRangeErrorMessage: () => Tq, getUndoAxesPermutation: () => hU, isIdentityPermutation: () => fq, log: () => pz, mergeRealAndImagArrays: () => tq, prepareAndValidate: () => xN, prepareSplitSize: () => gq, segment_util: () => DC, shouldFuse: () => xu, slice_util: () => ut, splitRealAndImagArrays: () => rq, stridesOrDilationsArePositive: () => Vs, tupleValuesAreOne: () => su, upcastType: () => dt, validateDefaultValueShape: () => BK, validateInput: () => Dd, validateUpdateShape: () => bC, warn: () => Ps });\nfunction FK(r, e) {\n let t10 = r[0].length;\n r.forEach((n, s) => {\n $(n.length === t10, () => `Error in concat${t10}D: rank of tensors[${s}] must be the same as the rank of the rest (${t10})`);\n }), $(e >= 0 && e < t10, () => `Error in concat${t10}D: axis must be between 0 and ${t10 - 1}.`);\n let o = r[0];\n r.forEach((n, s) => {\n for (let a = 0; a < t10; a++)\n $(a === e || n[a] === o[a], () => `Error in concat${t10}D: Shape of tensors[${s}] (${n}) does not match the shape of the rest (${o}) along the non-concatenated axis ${s}.`);\n });\n}\nfunction OK(r, e) {\n let t10 = r[0].slice();\n for (let o = 1; o < r.length; o++)\n t10[e] += r[o][e];\n return t10;\n}\nvar js;\n(function(r) {\n r[r.FIRST_DIM_SIZE = 0] = \"FIRST_DIM_SIZE\", r[r.VALUE_ROWIDS = 1] = \"VALUE_ROWIDS\", r[r.ROW_LENGTHS = 2] = \"ROW_LENGTHS\", r[r.ROW_SPLITS = 3] = \"ROW_SPLITS\", r[r.ROW_LIMITS = 4] = \"ROW_LIMITS\", r[r.ROW_STARTS = 5] = \"ROW_STARTS\";\n})(js || (js = {}));\nfunction PK(r, e, t10) {\n let o = new Array();\n if (t10 == null && e == null)\n return o;\n if (e == null)\n for (; o.length < r + t10.length; )\n o.push(-1);\n else\n o = e.slice();\n if (t10 == null)\n return o;\n if (r + t10.length !== o.length)\n throw new Error(`rt input.shape and shape=${e} are incompatible: rt input.rank = ${r + t10.length}, but shape.rank = ${o.length}`);\n for (let n = 1; n < t10.length; ++n) {\n let s = t10[n], a = o[o.length - t10.length + n], i = o[a];\n if (s >= 0)\n if (i >= 0) {\n if (i !== s)\n throw new Error(`rt input.shape and shape=${e} are incompatible: rt input.shape[${n + r}] = ${s} but shape[${n + r}] = ${i}`);\n } else\n o[a] = s;\n }\n return o;\n}\nfunction MK(r) {\n let e = { FIRST_DIM_SIZE: js.FIRST_DIM_SIZE, VALUE_ROWIDS: js.VALUE_ROWIDS, ROW_LENGTHS: js.ROW_LENGTHS, ROW_SPLITS: js.ROW_SPLITS, ROW_LIMITS: js.ROW_LIMITS, ROW_STARTS: js.ROW_STARTS }, t10 = [];\n for (let o of r)\n if (o in e)\n t10.push(e[o]);\n else\n break;\n return t10;\n}\nfunction LK(r) {\n return r.length === 0 ? 0 : r[0] === js.FIRST_DIM_SIZE ? r.length - 1 : r.length;\n}\nfunction BK(r, e) {\n if (r == null || e == null)\n return;\n let t10 = r.length, o = e.length;\n if (t10 >= o)\n throw new Error(`defaultValue.shape=${r} and ragged tensor flatValues.shape=${e}, are incompatible: defaultValue.rank = ${t10} must be less than ragged tensor input flatValues.rank = ${o})`);\n for (let n = 0; n < Math.min(t10, o - 1); ++n) {\n let s = r[n], a = e[n + 1];\n if (s >= 0 && a >= 0 && s !== 1 && s !== a)\n throw new Error(`defaultValue.shape=${r}, and ragged tensor input flatValues.shape=${e} are incompatible: defaultValue.shape[${n - r.length}] = ${s} but ragged tensor input.flatValues.shape[${n - r.length}] = ${a}`);\n }\n}\nvar Ud = 30;\nfunction VK(r) {\n return r <= Ud ? r : cp(r, Math.floor(Math.sqrt(r)));\n}\nfunction zK(r, e, t10) {\n let o = t10 * (typeof r == \"number\" ? r : r[0]), n = e * (typeof r == \"number\" ? r : r[1]);\n return [o, n];\n}\nfunction WK(r, e, t10, o = true) {\n let n = [];\n if (o)\n n = n.concat(e.slice(0)), n.push(r[0] / t10), n = n.concat(r.slice(1));\n else {\n n = n.concat(r[0]);\n let s = e.length;\n for (let a = 0; a < s; ++a)\n n = n.concat([r[a + 1] / e[a], e[a]]);\n n = n.concat(r.slice(s + 1));\n }\n return n;\n}\nfunction UK(r, e, t10 = true) {\n let o = [];\n if (t10) {\n o.push(e);\n for (let n = e + 1; n < r; ++n)\n n <= 2 * e ? (o.push(n), o.push(n - (e + 1))) : o.push(n);\n } else {\n let n = [], s = [];\n for (let a = 1; a < r; ++a)\n a >= e * 2 + 1 || a % 2 === 1 ? s.push(a) : n.push(a);\n o.push(...n), o.push(0), o.push(...s);\n }\n return o;\n}\nfunction GK(r, e, t10, o = true) {\n let n = [];\n o ? n.push(r[0] / t10) : n.push(r[0] * t10);\n for (let s = 1; s < r.length; ++s)\n s <= e.length ? o ? n.push(e[s - 1] * r[s]) : n.push(r[s] / e[s - 1]) : n.push(r[s]);\n return n;\n}\nfunction HK(r, e) {\n let t10 = [0];\n for (let o = 0; o < e; ++o)\n t10.push(r[o][0]);\n return t10;\n}\nfunction KK(r, e, t10) {\n let o = r.slice(0, 1);\n for (let n = 0; n < t10; ++n)\n o.push(r[n + 1] - e[n][0] - e[n][1]);\n return o;\n}\nvar qK = 1.7580993408473768;\nvar jK = 1.0507009873554805;\nvar XK = 0.3275911;\nvar YK = 0.254829592;\nvar QK = -0.284496736;\nvar ZK = 1.421413741;\nvar JK = -1.453152027;\nvar eq = 1.061405429;\nfunction tq(r, e) {\n if (r.length !== e.length)\n throw new Error(`Cannot merge real and imag arrays of different lengths. real:${r.length}, imag: ${e.length}.`);\n let t10 = new Float32Array(r.length * 2);\n for (let o = 0; o < t10.length; o += 2)\n t10[o] = r[o / 2], t10[o + 1] = e[o / 2];\n return t10;\n}\nfunction rq(r) {\n let e = new Float32Array(r.length / 2), t10 = new Float32Array(r.length / 2);\n for (let o = 0; o < r.length; o += 2)\n e[o / 2] = r[o], t10[o / 2] = r[o + 1];\n return { real: e, imag: t10 };\n}\nfunction oq(r) {\n let e = Math.ceil(r.length / 4), t10 = new Float32Array(e), o = new Float32Array(e);\n for (let n = 0; n < r.length; n += 4)\n t10[Math.floor(n / 4)] = r[n], o[Math.floor(n / 4)] = r[n + 1];\n return { real: t10, imag: o };\n}\nfunction nq(r) {\n let e = Math.floor(r.length / 4), t10 = new Float32Array(e), o = new Float32Array(e);\n for (let n = 2; n < r.length; n += 4)\n t10[Math.floor(n / 4)] = r[n], o[Math.floor(n / 4)] = r[n + 1];\n return { real: t10, imag: o };\n}\nfunction sq(r, e) {\n let t10 = r[e * 2], o = r[e * 2 + 1];\n return { real: t10, imag: o };\n}\nfunction aq(r, e, t10, o) {\n r[o * 2] = e, r[o * 2 + 1] = t10;\n}\nfunction iq(r, e) {\n let t10 = new Float32Array(r / 2), o = new Float32Array(r / 2);\n for (let n = 0; n < Math.ceil(r / 2); n++) {\n let s = (e ? 2 : -2) * Math.PI * (n / r);\n t10[n] = Math.cos(s), o[n] = Math.sin(s);\n }\n return { real: t10, imag: o };\n}\nfunction uq(r, e, t10) {\n let o = (t10 ? 2 : -2) * Math.PI * (r / e), n = Math.cos(o), s = Math.sin(o);\n return { real: n, imag: s };\n}\nvar RC = \"->\";\nvar pq = /->/g;\nvar TN = \",\";\nvar _N = \"...\";\nfunction cq(r, e) {\n r = r.replace(/\\s/g, \"\");\n let t10 = (r.length - r.replace(pq, \"\").length) / RC.length;\n if (t10 < 1)\n throw new Error(\"Equations without an arrow are not supported.\");\n if (t10 > 1)\n throw new Error(`Equation must contain exactly one arrow (\"${RC}\").`);\n let [o, n] = r.split(RC);\n $(o.indexOf(_N) === -1, () => `The ellipsis notation (\"${_N}\") is not supported yet.`);\n let s = o.split(TN), a = s.length;\n if (e !== a)\n throw new Error(`Expected ${a} input tensors, received ${e}`);\n if (a > 2)\n throw new Error(\"Support for more than 2 input tensors is not implemented yet.\");\n let i = [];\n for (let m = 0; m < n.length; ++m) {\n let d = n[m];\n if (!s.some((f) => f.indexOf(d) !== -1))\n throw new Error(`Output subscripts contain the label ${d} not present in the input subscripts.`);\n i.indexOf(d) === -1 && i.push(d);\n }\n for (let m = 0; m < o.length; ++m) {\n let d = o[m];\n i.indexOf(d) === -1 && d !== TN && i.push(d);\n }\n let p = new Array(s.length);\n for (let m = 0; m < a; ++m) {\n if (new Set(s[m].split(\"\")).size !== s[m].length)\n throw new Error(`Found duplicate axes in input component ${s[m]}. Support for duplicate axes in input is not implemented yet.`);\n p[m] = [];\n for (let d = 0; d < s[m].length; ++d)\n p[m].push(i.indexOf(s[m][d]));\n }\n let u = i.length, c = n.length, l = [];\n for (let m = c; m < u; ++m)\n l.push(m);\n return { allDims: i, summedDims: l, idDims: p };\n}\nfunction lq(r, e) {\n let t10 = new Array(r);\n t10.fill(-1);\n for (let n = 0; n < e.length; ++n)\n t10[e[n]] = n;\n let o = [];\n for (let n = 0; n < r; ++n)\n t10[n] === -1 && o.push(n);\n return t10 = t10.filter((n) => n !== -1), { permutationIndices: t10, expandDims: o };\n}\nfunction mq(r, e, t10) {\n let o = new Array(r);\n for (let n = 0; n < t10.length; ++n) {\n let s = t10[n].shape;\n for (let a = 0; a < e[n].length; ++a)\n o[e[n][a]] === void 0 ? o[e[n][a]] = s[a] : $(o[e[n][a]] === s[a], () => `Expected dimension ${o[e[n][a]]} at axis ${a} of input shaped ${JSON.stringify(s)}, but got dimension ${s[a]}`);\n }\n}\nfunction dq(r, e) {\n let t10 = r, o = [], n = 0;\n r.length === 0 && t10.push(-1), n = r.length + 1;\n for (let a = 0; a < n; ++a)\n o.push([]);\n let s = [];\n for (let a = 0; a < t10.length; ++a) {\n let i = t10[a], p = hq(e, i);\n for (let u of p)\n s.indexOf(u) === -1 && (o[a].push(u), s.push(u));\n }\n return { path: t10, steps: o };\n}\nfunction fq(r) {\n return r.every((e, t10) => e === t10);\n}\nfunction hq(r, e) {\n let t10 = [];\n for (let o = 0; o < r.length; ++o)\n (r[o].length === 0 || r[o].indexOf(e) !== -1 || e === -1) && t10.push(o);\n return t10;\n}\nfunction gq(r, e, t10 = 0) {\n let o = [];\n if (typeof e == \"number\")\n $(r.shape[t10] % e === 0, () => \"Number of splits must evenly divide the axis.\"), o = new Array(e).fill(r.shape[t10] / e);\n else {\n let n = e.reduce((a, i) => (i === -1 && (a += 1), a), 0);\n $(n <= 1, () => \"There should be only one negative value in split array.\");\n let s = e.indexOf(-1);\n if (s !== -1) {\n let a = e.reduce((i, p) => p > 0 ? i + p : i);\n e[s] = r.shape[t10] - a;\n }\n $(r.shape[t10] === e.reduce((a, i) => a + i), () => \"The sum of sizes must match the size of the axis dimension.\"), o = e;\n }\n return o;\n}\nfunction xq(r) {\n return `Received SparseTensor with denseShape[0] = 0 but\n indices.shape[0] = ${r}`;\n}\nfunction yq(r, e) {\n return `indices(${r}, 0) is invalid: ${e} < 0`;\n}\nfunction bq(r, e, t10) {\n return `indices(${r}, 0) is invalid: ${e} >= ${t10}`;\n}\nfunction Cq(r, e) {\n return `only one output dimension may be -1, not both ${r} and ${e}`;\n}\nfunction Sq(r, e) {\n return `size ${r} must be non-negative, not ${e}`;\n}\nfunction wq() {\n return \"reshape cannot infer the missing input size for an empty tensor unless all specified input sizes are non-zero\";\n}\nfunction Iq(r, e) {\n let t10 = We(r), o = We(e);\n return `Input to reshape is a SparseTensor with ${t10}\n dense values, but the requested shape requires a multiple of ${o}. inputShape=${r} outputShape= ${e}`;\n}\nfunction vq(r, e) {\n let t10 = We(r), o = We(e);\n return `Input to reshape is a tensor with ${t10} dense values, but the requested shape has ${o}. inputShape=${r} outputShape=${e}`;\n}\nfunction kq() {\n return \"segment ids must be >= 0\";\n}\nfunction Nq() {\n return \"segment ids are not increasing\";\n}\nfunction Tq(r, e) {\n return `Segment id ${r} out of range [0, ${e}), possibly because segmentIds input is not sorted.`;\n}\nfunction _q(r, e, t10) {\n return `Bad: indices[${r}] == ${e} out of range [0, ${t10})`;\n}\nvar DC = {};\nGe(DC, { collectGatherOpShapeInfo: () => Aq, computeOutShape: () => Eq, segOpComputeOptimalWindowSize: () => $q });\nfunction $q(r, e) {\n let t10 = false, o;\n for (r <= Ud ? (o = r, t10 = true) : o = cp(r, Math.floor(Math.sqrt(r))); !t10; )\n o > e || o === r ? t10 = true : o = cp(r, o + 1);\n return o;\n}\nfunction Eq(r, e, t10) {\n let o = [], n = r.length;\n for (let s = 0; s < n; s++)\n s !== e ? o.push(r[s]) : o.push(t10);\n return o;\n}\nfunction Aq(r, e, t10, o) {\n let n = e.shape.length, s = r.shape.length;\n if (o !== 0 && (o < -n || o > n))\n throw new Error(`Expect batchDims in the range of [-${n}, ${n}], but got ${o}`);\n if (o < 0 && (o += n), o > s)\n throw new Error(`batchDims (${o}) must be less than rank(x) (\n ${s}).`);\n if (t10 < o)\n throw new Error(`batchDims (${o}) must be less than or equal to axis (${t10}).`);\n for (let l = 0; l < o; ++l)\n if (r.shape[l] !== e.shape[l])\n throw new Error(`x.shape[${l}]: ${r.shape[l]} should be equal to indices.shape[${l}]: ${e.shape[l]}.`);\n let a = r.shape[t10], i = [], p = 1, u = 1, c = 1;\n for (let l = 0; l < o; ++l)\n i.push(r.shape[l]), p *= r.shape[l];\n for (let l = o; l < t10; l++)\n i.push(r.shape[l]), u *= r.shape[l];\n for (let l = o; l < n; l++)\n i.push(e.shape[l]);\n for (let l = t10 + 1; l < s; l++)\n i.push(r.shape[l]), c *= r.shape[l];\n return { batchSize: p, sliceSize: c, outerSize: u, dimSize: a, outputShape: i };\n}\nfunction Rq(r) {\n try {\n return r.map((e) => Rp(e));\n } catch (e) {\n throw new Error(`Failed to decode encoded string bytes into utf-8, error: ${e}`);\n }\n}\nfunction Dq(r) {\n return r.map((e) => Ii(e));\n}\nvar Vt = {};\nGe(Vt, { nonMaxSuppressionV3Impl: () => Pd, nonMaxSuppressionV4Impl: () => Md, nonMaxSuppressionV5Impl: () => Ld, whereImpl: () => Ad });\nnN();\nvar Fq = O();\nFq.registerFlag(\"KEEP_INTERMEDIATE_TENSORS\", () => false, (r) => {\n r && console.warn(\"Keep intermediate tensors is ON. This will print the values of all intermediate tensors during model inference. Not all models support this mode. For details, check e2e/benchmarks/ model_config.js. This significantly impacts performance.\");\n});\nvar ao;\n(function(r) {\n r[r.DT_INVALID = 0] = \"DT_INVALID\", r[r.DT_FLOAT = 1] = \"DT_FLOAT\", r[r.DT_DOUBLE = 2] = \"DT_DOUBLE\", r[r.DT_INT32 = 3] = \"DT_INT32\", r[r.DT_UINT8 = 4] = \"DT_UINT8\", r[r.DT_INT16 = 5] = \"DT_INT16\", r[r.DT_INT8 = 6] = \"DT_INT8\", r[r.DT_STRING = 7] = \"DT_STRING\", r[r.DT_COMPLEX64 = 8] = \"DT_COMPLEX64\", r[r.DT_INT64 = 9] = \"DT_INT64\", r[r.DT_BOOL = 10] = \"DT_BOOL\", r[r.DT_QINT8 = 11] = \"DT_QINT8\", r[r.DT_QUINT8 = 12] = \"DT_QUINT8\", r[r.DT_QINT32 = 13] = \"DT_QINT32\", r[r.DT_BFLOAT16 = 14] = \"DT_BFLOAT16\", r[r.DT_QINT16 = 15] = \"DT_QINT16\", r[r.DT_QUINT16 = 16] = \"DT_QUINT16\", r[r.DT_UINT16 = 17] = \"DT_UINT16\", r[r.DT_COMPLEX128 = 18] = \"DT_COMPLEX128\", r[r.DT_HALF = 19] = \"DT_HALF\", r[r.DT_RESOURCE = 20] = \"DT_RESOURCE\", r[r.DT_VARIANT = 21] = \"DT_VARIANT\", r[r.DT_UINT32 = 22] = \"DT_UINT32\", r[r.DT_UINT64 = 23] = \"DT_UINT64\", r[r.DT_FLOAT_REF = 101] = \"DT_FLOAT_REF\", r[r.DT_DOUBLE_REF = 102] = \"DT_DOUBLE_REF\", r[r.DT_INT32_REF = 103] = \"DT_INT32_REF\", r[r.DT_UINT8_REF = 104] = \"DT_UINT8_REF\", r[r.DT_INT16_REF = 105] = \"DT_INT16_REF\", r[r.DT_INT8_REF = 106] = \"DT_INT8_REF\", r[r.DT_STRING_REF = 107] = \"DT_STRING_REF\", r[r.DT_COMPLEX64_REF = 108] = \"DT_COMPLEX64_REF\", r[r.DT_INT64_REF = 109] = \"DT_INT64_REF\", r[r.DT_BOOL_REF = 110] = \"DT_BOOL_REF\", r[r.DT_QINT8_REF = 111] = \"DT_QINT8_REF\", r[r.DT_QUINT8_REF = 112] = \"DT_QUINT8_REF\", r[r.DT_QINT32_REF = 113] = \"DT_QINT32_REF\", r[r.DT_BFLOAT16_REF = 114] = \"DT_BFLOAT16_REF\", r[r.DT_QINT16_REF = 115] = \"DT_QINT16_REF\", r[r.DT_QUINT16_REF = 116] = \"DT_QUINT16_REF\", r[r.DT_UINT16_REF = 117] = \"DT_UINT16_REF\", r[r.DT_COMPLEX128_REF = 118] = \"DT_COMPLEX128_REF\", r[r.DT_HALF_REF = 119] = \"DT_HALF_REF\", r[r.DT_RESOURCE_REF = 120] = \"DT_RESOURCE_REF\", r[r.DT_VARIANT_REF = 121] = \"DT_VARIANT_REF\", r[r.DT_UINT32_REF = 122] = \"DT_UINT32_REF\", r[r.DT_UINT64_REF = 123] = \"DT_UINT64_REF\";\n})(ao || (ao = {}));\nvar $N;\n(function(r) {\n let e;\n (function(t10) {\n t10[t10.LEGACY = 0] = \"LEGACY\", t10[t10.V1 = 1] = \"V1\", t10[t10.V2 = 2] = \"V2\";\n })(e = r.CheckpointFormatVersion || (r.CheckpointFormatVersion = {}));\n})($N || ($N = {}));\nvar OC = {};\nfunction Pq(r, e) {\n let t10 = { tfOpName: r, category: \"custom\", inputs: [], attrs: [], customExecutor: e };\n OC[r] = t10;\n}\nfunction Gd(r) {\n return OC[r];\n}\nfunction Mq(r) {\n delete OC[r];\n}\nfunction I(r, e, t10, o, n) {\n let s = e.inputParams[r];\n if (s && s.inputIndexStart !== void 0) {\n let i = s.inputIndexStart, p = s.inputIndexEnd === 0 ? void 0 : s.inputIndexEnd === void 0 ? i + 1 : s.inputIndexEnd;\n if (s.type === \"tensor\")\n return Gt(e.inputNames[s.inputIndexStart], t10, o, n);\n if (s.type === \"tensors\")\n return e.inputNames.slice(i, p).map((m) => Gt(m, t10, o, n));\n let u = Gt(e.inputNames.slice(i)[0], t10, o, n), c = u.dataSync();\n return s.type === \"number\" ? c[0] : y.toNestedArray(u.shape, c);\n }\n let a = e.attrParams[r];\n return a && a.value;\n}\nfunction Gt(r, e, t10, o) {\n let [n, s] = Ir(r);\n if (o != null) {\n let i = o.getHashTableHandleByName(n);\n if (i != null)\n return i;\n }\n let a = t10.currentContextIds.find((i) => !!e[Hd(n, i)]);\n return a !== void 0 ? e[Hd(n, a)][s] : void 0;\n}\nfunction EN(r, e, t10) {\n return e[Hd(r, t10.currentContextId)];\n}\nfunction as(r, e) {\n let [t10, o, n] = Ir(r);\n return [Hd(t10, e && e.currentContextId), o, n];\n}\nfunction Hd(r, e) {\n return e ? `${r}-${e}` : r;\n}\nfunction Ir(r) {\n let e = r.split(\":\");\n if (e.length === 1)\n return [r, 0, void 0];\n let t10 = e[0], o = e.length === 3 ? e[1] : void 0, n = Number(e[e.length - 1]);\n return [t10, n, o];\n}\nfunction ll(r, e, t10) {\n let o = I(\"pad\", r, e, t10);\n if (o === \"explicit\") {\n o = I(\"explicitPaddings\", r, e, t10);\n let n = [[0, 0], [0, 0], [0, 0], [0, 0]];\n for (let s = 0; s < 4; s++)\n n[s][0] = o[s * 2], n[s][1] = o[s * 2 + 1];\n return n;\n }\n return o;\n}\nfunction is(r) {\n return r.kept ? r : Lr(r);\n}\nvar PC = {};\nGe(PC, { json: () => Lq });\nvar Lq = [{ 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: true }] }, { 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: true }] }, { 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: true }, { tfName: \"data_format\", name: \"dataFormat\", type: \"string\", notSupported: true }] }, { 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: true }] }, { 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: true }] }, { 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: true }] }, { 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: true }] }, { 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: true }] }, { 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: true }] }, { tfOpName: \"Maximum\", category: \"arithmetic\", inputs: [{ start: 0, name: \"a\", type: \"tensor\" }, { start: 1, name: \"b\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Minimum\", category: \"arithmetic\", inputs: [{ start: 0, name: \"a\", type: \"tensor\" }, { start: 1, name: \"b\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { 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: true }] }, { 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: true }] }, { 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: true }] }, { 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: true }] }];\nvar MC = {};\nGe(MC, { json: () => Bq });\nvar Bq = [{ tfOpName: \"Abs\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Acos\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Asin\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Atan\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { 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: true }] }, { tfOpName: \"Ceil\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"ClipByValue\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }, { start: 1, name: \"clipValueMin\", type: \"number\" }, { start: 2, name: \"clipValueMax\", type: \"number\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { 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: true }] }, { tfOpName: \"ComplexAbs\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Cos\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Cosh\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Elu\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Exp\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Floor\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Log\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Imag\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }, { tfName: \"Tout\", name: \"outputType\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Neg\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Real\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }, { tfName: \"Tout\", name: \"outputType\", type: \"dtype\", notSupported: true }] }, { 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: true }] }, { tfOpName: \"Relu\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Relu6\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Selu\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Sigmoid\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Sin\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Sinh\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Sqrt\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Rsqrt\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Square\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Tan\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Tanh\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Sign\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Round\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Expm1\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Log1p\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Reciprocal\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Softplus\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Asinh\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Acosh\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Atanh\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"Erf\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { 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: true }, { tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"LeakyRelu\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"alpha\", name: \"alpha\", type: \"number\", defaultValue: 0.2 }, { tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"IsNan\", category: \"basic_math\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }];\nvar LC = {};\nGe(LC, { json: () => Vq });\nvar Vq = [{ tfOpName: \"EmptyTensorList\", category: \"control\", inputs: [{ start: 0, name: \"elementShape\", type: \"shape\" }, { start: 1, name: \"maxNumElements\", type: \"number\" }], attrs: [{ tfName: \"element_dtype\", name: \"elementDType\", type: \"dtype\" }] }, { 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: true }, { 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: true }] }, { tfOpName: \"NextIteration\", category: \"control\", inputs: [{ start: 0, name: \"tensor\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { 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: true }] }, { 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: true }] }, { 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: true }] }, { 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: \"TensorListConcatV2\", 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\" }] }, { tfOpName: \"TensorListLength\", category: \"control\", inputs: [{ start: 0, name: \"tensorListId\", type: \"tensor\" }] }, { tfOpName: \"TensorListResize\", category: \"control\", inputs: [{ start: 0, name: \"tensorListId\", type: \"tensor\" }, { start: 1, name: \"size\", type: \"number\" }] }];\nvar BC = {};\nGe(BC, { json: () => zq });\nvar zq = [{ 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: true }, { tfName: \"ksize\", name: \"kernelSize\", type: \"number[]\" }, { tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { 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: true }, { tfName: \"ksize\", name: \"kernelSize\", type: \"number[]\" }, { tfName: \"explicit_paddings\", name: \"explicitPaddings\", type: \"number[]\", defaultValue: [], notSupported: true }, { tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { 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: true }] }, { 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: true }, { tfName: \"ksize\", name: \"kernelSize\", type: \"number[]\" }, { tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { 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: true }, { tfName: \"ksize\", name: \"kernelSize\", type: \"number[]\" }, { tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { 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: true }, { 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: true }, { 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: true }, { 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: true }, { 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 }, { tfName: \"leakyrelu_alpha\", name: \"leakyreluAlpha\", type: \"number\", defaultValue: 0.2 }] }, { 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: true }, { tfName: \"explicit_paddings\", name: \"explicitPaddings\", type: \"number[]\", defaultValue: [] }, { tfName: \"dilations\", name: \"dilations\", type: \"number[]\", notSupported: true }] }, { 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: true }, { 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: [] }, { tfName: \"explicit_paddings\", name: \"explicitPaddings\", type: \"number[]\", 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\" }] }];\nvar VC = {};\nGe(VC, { json: () => Wq });\nvar Wq = [{ 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: true }] }, { 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: true }, { tfName: \"T\", name: \"dtype\", type: \"dtype\" }] }, { 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: \"RandomStandardNormal\", category: \"creation\", inputs: [{ start: 0, name: \"shape\", type: \"number[]\" }], attrs: [{ tfName: \"seed\", name: \"seed\", type: \"number\", defaultValue: 0 }, { tfName: \"seed2\", name: \"seed2\", type: \"number\", defaultValue: 0, notSupported: true }, { tfName: \"dtype\", name: \"dtype\", type: \"dtype\" }, { tfName: \"T\", name: \"T\", type: \"number\", notSupported: true }] }, { 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: true }, { tfName: \"T\", name: \"T\", type: \"number\", notSupported: true }] }, { 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: true }, { tfName: \"dtype\", name: \"dtype\", type: \"dtype\" }, { tfName: \"T\", name: \"T\", type: \"number\", notSupported: true }] }, { 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\" }] }];\nvar zC = {};\nGe(zC, { json: () => Uq });\nvar Uq = [{ 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: true }, { tfName: \"T_threshold\", name: \"threshold\", type: \"dtype\", notSupported: true }, { 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: true }] }, { 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: true }] }];\nvar WC = {};\nGe(WC, { json: () => Gq });\nvar Gq = [{ tfOpName: \"LowerBound\", category: \"evaluation\", inputs: [{ start: 0, name: \"sortedSequence\", type: \"tensor\" }, { start: 1, name: \"values\", type: \"tensor\" }] }, { 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: \"UpperBound\", category: \"evaluation\", inputs: [{ start: 0, name: \"sortedSequence\", type: \"tensor\" }, { start: 1, name: \"values\", type: \"tensor\" }] }, { 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\" }] }];\nvar UC = {};\nGe(UC, { json: () => Hq });\nvar Hq = [{ 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: true }, { 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\" }] }];\nvar GC = {};\nGe(GC, { json: () => Kq });\nvar Kq = [{ 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: true }, { tfName: \"Tout\", name: \"tOut\", type: \"dtype\", notSupported: true }] }, { 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: true }, { tfName: \"Tout\", name: \"tOut\", type: \"dtype\", notSupported: true }] }, { 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: true }, { tfName: \"Tout\", name: \"tOut\", type: \"dtype\", notSupported: true }] }, { 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: true }, { tfName: \"Tout\", name: \"tOut\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"LookupTableSize\", category: \"hash_table\", inputs: [{ start: 0, name: \"tableHandle\", type: \"tensor\" }] }, { tfOpName: \"LookupTableSizeV2\", category: \"hash_table\", inputs: [{ start: 0, name: \"tableHandle\", type: \"tensor\" }] }, { tfOpName: \"InitializeTable\", category: \"hash_table\", inputs: [{ start: 0, name: \"tableHandle\", type: \"tensor\" }, { start: 1, name: \"keys\", type: \"tensor\" }, { start: 2, name: \"values\", type: \"tensor\" }] }, { tfOpName: \"InitializeTableV2\", category: \"hash_table\", inputs: [{ start: 0, name: \"tableHandle\", type: \"tensor\" }, { start: 1, name: \"keys\", type: \"tensor\" }, { start: 2, name: \"values\", type: \"tensor\" }] }];\nvar HC = {};\nGe(HC, { json: () => qq });\nvar qq = [{ 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: \"half_pixel_centers\", name: \"halfPixelCenters\", type: \"bool\" }, { tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { 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: \"half_pixel_centers\", name: \"halfPixelCenters\", type: \"bool\" }, { tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { 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\" }] }, { tfOpName: \"ImageProjectiveTransformV3\", category: \"image\", inputs: [{ start: 0, name: \"images\", type: \"tensor\" }, { start: 1, name: \"transforms\", type: \"tensor\" }, { start: 2, name: \"outputShape\", type: \"number[]\" }, { start: 3, name: \"fillValue\", type: \"number\" }], attrs: [{ tfName: \"interpolation\", name: \"interpolation\", type: \"string\" }, { tfName: \"fill_mode\", name: \"fillMode\", type: \"string\" }] }];\nvar KC = {};\nGe(KC, { json: () => jq });\nvar jq = [{ 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: true }] }, { 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: true }] }, { 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: true }] }, { 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: true }] }, { 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: true }] }, { 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: true }] }, { 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: true }] }, { tfOpName: \"LogicalNot\", category: \"logical\", inputs: [{ start: 0, name: \"a\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { 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: true }] }, { 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: true }] }, { 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: true }] }];\nvar qC = {};\nGe(qC, { json: () => Xq });\nvar Xq = [{ 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: false }, { tfName: \"transpose_b\", name: \"transposeB\", type: \"bool\", defaultValue: false }, { tfName: \"leakyrelu_alpha\", name: \"leakyreluAlpha\", type: \"number\", defaultValue: 0.2 }, { tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { 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: false }, { tfName: \"transpose_b\", name: \"transposeB\", type: \"bool\", defaultValue: false }, { tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { 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: false }, { tfName: \"adj_y\", name: \"transposeB\", type: \"bool\", defaultValue: false }, { tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { 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: false }, { tfName: \"adj_y\", name: \"transposeB\", type: \"bool\", defaultValue: false }, { tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { 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: true }] }, { tfOpName: \"Einsum\", category: \"matrices\", inputs: [{ start: 0, end: 0, name: \"tensors\", type: \"tensors\" }], attrs: [{ tfName: \"equation\", name: \"equation\", type: \"string\" }, { tfName: \"N\", name: \"n\", type: \"number\", defaultValue: 2 }, { tfName: \"T\", name: \"dtype\", type: \"dtype\" }] }];\nvar jC = {};\nGe(jC, { json: () => Yq });\nvar Yq = [{ tfOpName: \"EuclideanNorm\", category: \"normalization\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }, { start: 1, name: \"axis\", type: \"number[]\" }], attrs: [{ tfName: \"keep_dims\", name: \"keepDims\", type: \"bool\", defaultValue: false }] }, { 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: 1e-3 }, { tfName: \"data_format\", name: \"dataFormat\", type: \"string\", notSupported: true }] }, { 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: 1e-3 }, { tfName: \"data_format\", name: \"dataFormat\", type: \"string\", notSupported: true }] }, { 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: 1e-3 }, { tfName: \"data_format\", name: \"dataFormat\", type: \"string\", notSupported: true }] }, { 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: 0.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: true, notSupported: true }] }];\nvar XC = {};\nGe(XC, { json: () => Qq });\nvar Qq = [{ tfOpName: \"Bincount\", category: \"reduction\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }, { start: 1, name: \"size\", type: \"number\" }, { start: 2, name: \"weights\", type: \"tensor\" }] }, { tfOpName: \"DenseBincount\", category: \"reduction\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }, { start: 1, name: \"size\", type: \"number\" }, { start: 2, name: \"weights\", type: \"tensor\" }], attrs: [{ tfName: \"binary_output\", name: \"binaryOutput\", type: \"bool\" }] }, { 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: \"Cumprod\", 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\" }] }, { 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\" }] }];\nvar YC = {};\nGe(YC, { json: () => Zq });\nvar Zq = [{ 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 }], attrs: [{ tfName: \"batch_dims\", name: \"batchDims\", type: \"number\", defaultValue: 0 }] }, { tfOpName: \"Gather\", category: \"slice_join\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }, { start: 1, name: \"indices\", type: \"tensor\" }], attrs: [{ tfName: \"validate_indices\", name: \"validateIndices\", type: \"bool\", notSupported: true }] }, { tfOpName: \"Reverse\", category: \"slice_join\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }, { start: 1, name: \"dims\", type: \"bool[]\" }] }, { 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: true }] }, { 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: false, notSupported: true }] }];\nvar QC = {};\nGe(QC, { json: () => Jq });\nvar Jq = [{ tfOpName: \"SparseFillEmptyRows\", category: \"sparse\", inputs: [{ start: 0, name: \"indices\", type: \"tensor\" }, { start: 1, name: \"values\", type: \"tensor\" }, { start: 2, name: \"denseShape\", type: \"tensor\" }, { start: 3, name: \"defaultValue\", type: \"tensor\" }] }, { tfOpName: \"SparseReshape\", category: \"sparse\", inputs: [{ start: 0, name: \"inputIndices\", type: \"tensor\" }, { start: 1, name: \"inputShape\", type: \"tensor\" }, { start: 2, name: \"newShape\", type: \"tensor\" }], attrs: [{ tfName: \"T\", name: \"dtype\", type: \"dtype\", notSupported: true }] }, { tfOpName: \"SparseSegmentMean\", category: \"sparse\", inputs: [{ start: 0, name: \"data\", type: \"tensor\" }, { start: 1, name: \"indices\", type: \"tensor\" }, { start: 2, name: \"segmentIds\", type: \"tensor\" }] }, { tfOpName: \"SparseSegmentSum\", category: \"sparse\", inputs: [{ start: 0, name: \"data\", type: \"tensor\" }, { start: 1, name: \"indices\", type: \"tensor\" }, { start: 2, name: \"segmentIds\", type: \"tensor\" }] }];\nvar ZC = {};\nGe(ZC, { json: () => e6 });\nvar e6 = [{ 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: true }] }, { tfOpName: \"IRFFT\", category: \"spectral\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }, { start: 1, name: \"fft_length\", type: \"number\", notSupported: true }] }];\nvar JC = {};\nGe(JC, { json: () => t6 });\nvar t6 = [{ tfOpName: \"StringNGrams\", category: \"string\", inputs: [{ start: 0, name: \"data\", type: \"tensor\" }, { start: 1, name: \"dataSplits\", type: \"tensor\" }], attrs: [{ tfName: \"separator\", name: \"separator\", type: \"string\" }, { tfName: \"ngram_widths\", name: \"nGramWidths\", type: \"number[]\" }, { tfName: \"left_pad\", name: \"leftPad\", type: \"string\" }, { tfName: \"right_pad\", name: \"rightPad\", type: \"string\" }, { tfName: \"pad_width\", name: \"padWidth\", type: \"number\" }, { tfName: \"preserve_short_sequences\", name: \"preserveShortSequences\", type: \"bool\" }], outputs: [\"ngrams\", \"ngrams_splits\"] }, { tfOpName: \"StringSplit\", category: \"string\", inputs: [{ start: 0, name: \"input\", type: \"tensor\" }, { start: 1, name: \"delimiter\", type: \"tensor\" }], attrs: [{ tfName: \"skip_empty\", name: \"skipEmpty\", type: \"bool\" }], outputs: [\"indices\", \"values\", \"shape\"] }, { tfOpName: \"StringToHashBucketFast\", category: \"string\", inputs: [{ start: 0, name: \"input\", type: \"tensor\" }], attrs: [{ tfName: \"num_buckets\", name: \"numBuckets\", type: \"number\" }] }];\nvar eS = {};\nGe(eS, { json: () => r6 });\nvar r6 = [{ tfOpName: \"Cast\", category: \"transformation\", inputs: [{ start: 0, name: \"x\", type: \"tensor\" }], attrs: [{ tfName: \"SrcT\", name: \"sdtype\", type: \"dtype\", notSupported: true }, { 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: [] }, { tfOpName: \"BroadcastArgs\", category: \"transformation\", inputs: [{ start: 0, name: \"s0\", type: \"tensor\" }, { start: 1, name: \"s1\", type: \"tensor\" }], attrs: [] }];\nvar ml = class {\n constructor() {\n let e = [PC, MC, LC, BC, VC, zC, WC, UC, GC, HC, KC, qC, jC, XC, YC, QC, ZC, JC, eS], t10 = [].concat(...e.map((o) => o.json));\n this.opMappers = t10.reduce((o, n) => (o[n.tfOpName] = n, o), {});\n }\n static get Instance() {\n return this._instance || (this._instance = new this());\n }\n transformGraph(e, t10 = {}) {\n let o = e.node, n = [], s = [], a = [], i = o.reduce((h, g) => (h[g.name] = this.mapNode(g), g.op.startsWith(\"Placeholder\") ? n.push(h[g.name]) : g.op === \"Const\" ? s.push(h[g.name]) : (g.input == null || g.input.length === 0) && a.push(h[g.name]), h), {}), p = [], u = [], c = {}, l = {};\n t10 != null && (c = this.mapSignatureEntries(t10.inputs), l = this.mapSignatureEntries(t10.outputs));\n let m = Object.keys(i);\n m.forEach((h) => {\n let g = i[h];\n g.inputNames.forEach((x, b) => {\n let [C, , w] = as(x), k = i[C];\n if (k.outputs != null) {\n let _ = k.outputs.indexOf(w);\n if (_ !== -1) {\n let E = `${C}:${_}`;\n g.inputNames[b] = E;\n }\n }\n g.inputs.push(k), k.children.push(g);\n });\n }), Object.keys(l).length === 0 ? m.forEach((h) => {\n let g = i[h];\n g.children.length === 0 && u.push(g);\n }) : Object.keys(l).forEach((h) => {\n let [g] = as(h), x = i[g];\n x != null && (x.signatureKey = l[h], u.push(x));\n }), Object.keys(c).length > 0 ? Object.keys(c).forEach((h) => {\n let [g] = as(h), x = i[g];\n x && (x.signatureKey = c[h], p.push(x));\n }) : p = n;\n let d = {};\n e.library != null && e.library.function != null && (d = e.library.function.reduce((h, g) => (h[g.signature.name] = this.mapFunction(g), h), {}));\n let f = { nodes: i, inputs: p, outputs: u, weights: s, placeholders: n, signature: t10, functions: d };\n return a.length > 0 && (f.initNodes = a), f;\n }\n mapSignatureEntries(e) {\n return Object.keys(e || {}).reduce((t10, o) => (t10[e[o].name] = o, t10), {});\n }\n mapNode(e) {\n let t10 = Gd(e.op) || this.opMappers[e.op] || {};\n e.attr == null && (e.attr = {});\n let o = { name: e.name, op: e.op, category: t10.category, inputNames: (e.input || []).map((n) => n.startsWith(\"^\") ? n.slice(1) : n), inputs: [], children: [], inputParams: {}, attrParams: {}, rawAttrs: e.attr, outputs: t10.outputs };\n return t10.inputs != null && (o.inputParams = t10.inputs.reduce((n, s) => (n[s.name] = { type: s.type, inputIndexStart: s.start, inputIndexEnd: s.end }, n), {})), t10.attrs != null && (o.attrParams = t10.attrs.reduce((n, s) => {\n let a = s.type, i;\n switch (s.type) {\n case \"string\":\n i = Kd(e.attr, s.tfName, s.defaultValue), i === void 0 && s.tfDeprecatedName && (i = Kd(e.attr, s.tfDeprecatedName, s.defaultValue));\n break;\n case \"string[]\":\n i = Jd(e.attr, s.tfName, s.defaultValue), i === void 0 && s.tfDeprecatedName && (i = Jd(e.attr, s.tfDeprecatedName, s.defaultValue));\n break;\n case \"number\":\n i = jd(e.attr, s.tfName, s.defaultValue || 0), i === void 0 && s.tfDeprecatedName && (i = jd(e.attr, s.tfDeprecatedName, s.defaultValue));\n break;\n case \"number[]\":\n i = Zd(e.attr, s.tfName, s.defaultValue), i === void 0 && s.tfDeprecatedName && (i = Zd(e.attr, s.tfDeprecatedName, s.defaultValue));\n break;\n case \"bool\":\n i = qd(e.attr, s.tfName, s.defaultValue), i === void 0 && s.tfDeprecatedName && (i = qd(e.attr, s.tfDeprecatedName, s.defaultValue));\n break;\n case \"bool[]\":\n i = tf(e.attr, s.tfName, s.defaultValue), i === void 0 && s.tfDeprecatedName && (i = tf(e.attr, s.tfDeprecatedName, s.defaultValue));\n break;\n case \"shape\":\n i = Qd(e.attr, s.tfName, s.defaultValue), i === void 0 && s.tfDeprecatedName && (i = Qd(e.attr, s.tfDeprecatedName, s.defaultValue));\n break;\n case \"shape[]\":\n i = ef(e.attr, s.tfName, s.defaultValue), i === void 0 && s.tfDeprecatedName && (i = ef(e.attr, s.tfDeprecatedName, s.defaultValue));\n break;\n case \"dtype\":\n i = Xd(e.attr, s.tfName, s.defaultValue), i === void 0 && s.tfDeprecatedName && (i = Xd(e.attr, s.tfDeprecatedName, s.defaultValue));\n break;\n case \"dtype[]\":\n i = Yd(e.attr, s.tfName, s.defaultValue), i === void 0 && s.tfDeprecatedName && (i = Yd(e.attr, s.tfDeprecatedName, s.defaultValue));\n break;\n case \"func\":\n i = AN(e.attr, s.tfName, s.defaultValue), i === void 0 && s.tfDeprecatedName && (i = AN(e.attr, s.tfDeprecatedName, s.defaultValue));\n break;\n case \"tensor\":\n case \"tensors\":\n break;\n default:\n throw new Error(`Unsupported param type: ${s.type} for op: ${e.op}`);\n }\n return n[s.name] = { value: i, type: a }, n;\n }, {})), o;\n }\n mapFunction(e) {\n let t10 = e.nodeDef, o = [], n = [], s = {};\n t10 != null && (s = t10.reduce((l, m) => (l[m.name] = this.mapNode(m), m.op === \"Const\" && n.push(l[m.name]), l), {}));\n let a = [], i = [];\n e.signature.inputArg.forEach((l) => {\n let [m] = as(l.name), d = { name: m, op: \"Placeholder\", inputs: [], inputNames: [], category: \"graph\", inputParams: {}, attrParams: { dtype: { value: tS(l.type), type: \"dtype\" } }, children: [] };\n d.signatureKey = l.name, a.push(d), s[m] = d;\n }), Object.keys(s).forEach((l) => {\n let m = s[l];\n m.inputNames.forEach((d, f) => {\n let [h, , g] = as(d), x = s[h];\n if (x.outputs != null) {\n let b = x.outputs.indexOf(g);\n if (b !== -1) {\n let C = `${h}:${b}`;\n m.inputNames[f] = C;\n }\n }\n m.inputs.push(x), x.children.push(m);\n });\n });\n let u = e.ret;\n e.signature.outputArg.forEach((l) => {\n let [m, d] = as(u[l.name]), f = s[m];\n f != null && (f.defaultOutput = d, i.push(f));\n });\n let c = this.mapArgsToSignature(e);\n return { nodes: s, inputs: a, outputs: i, weights: n, placeholders: o, signature: c };\n }\n mapArgsToSignature(e) {\n return { methodName: e.signature.name, inputs: e.signature.inputArg.reduce((t10, o) => (t10[o.name] = this.mapArgToTensorInfo(o), t10), {}), outputs: e.signature.outputArg.reduce((t10, o) => (t10[o.name] = this.mapArgToTensorInfo(o, e.ret), t10), {}) };\n }\n mapArgToTensorInfo(e, t10) {\n let o = e.name;\n return t10 != null && (o = t10[o]), { name: o, dtype: e.type };\n }\n};\nfunction o6(r) {\n let e = O().global;\n if (typeof e.atob != \"undefined\")\n return e.atob(r);\n if (typeof Buffer != \"undefined\")\n return new Buffer(r, \"base64\").toString();\n throw new Error(\"Unable to decode base64 in this environment. Missing built-in atob() or Buffer()\");\n}\nfunction RN(r, e) {\n let t10 = Array.isArray(r) ? String.fromCharCode.apply(null, r) : o6(r);\n return e ? t10 : t10.toLowerCase();\n}\nfunction Kd(r, e, t10, o = false) {\n let n = r[e];\n return n != null ? RN(n.s, o) : t10;\n}\nfunction qd(r, e, t10) {\n let o = r[e];\n return o ? o.b : t10;\n}\nfunction jd(r, e, t10) {\n let o = r[e] || {}, n = o.i != null ? o.i : o.f != null ? o.f : t10;\n return typeof n == \"number\" ? n : parseInt(n, 10);\n}\nfunction tS(r) {\n switch (typeof r == \"string\" && (r = ao[r]), r) {\n case ao.DT_FLOAT:\n case ao.DT_HALF:\n return \"float32\";\n case ao.DT_INT32:\n case ao.DT_INT64:\n case ao.DT_INT8:\n case ao.DT_UINT8:\n return \"int32\";\n case ao.DT_BOOL:\n return \"bool\";\n case ao.DT_DOUBLE:\n return \"float32\";\n case ao.DT_STRING:\n return \"string\";\n default:\n return null;\n }\n}\nfunction AN(r, e, t10) {\n let o = r[e];\n return o && o.func ? o.func.name : t10;\n}\nfunction Xd(r, e, t10) {\n let o = r[e];\n return o && o.type ? tS(o.type) : t10;\n}\nfunction Yd(r, e, t10) {\n let o = r[e];\n return o && o.list && o.list.type ? o.list.type.map((n) => tS(n)) : t10;\n}\nfunction DN(r) {\n if (!r.unknownRank)\n return r.dim != null ? r.dim.map((e) => typeof e.size == \"number\" ? e.size : parseInt(e.size, 10)) : [];\n}\nfunction Qd(r, e, t10) {\n let o = r[e];\n return o && o.shape ? DN(o.shape) : t10;\n}\nfunction Zd(r, e, t10) {\n let o = r[e];\n return o ? ((o.list.f && o.list.f.length ? o.list.f : o.list.i) || []).map((n) => typeof n == \"number\" ? n : parseInt(n, 10)) : t10;\n}\nfunction Jd(r, e, t10, o = false) {\n let n = r[e];\n return n && n.list && n.list.s ? n.list.s.map((s) => RN(s, o)) : t10;\n}\nfunction ef(r, e, t10) {\n let o = r[e];\n return o && o.list && o.list.shape ? o.list.shape.map((n) => DN(n)) : t10;\n}\nfunction tf(r, e, t10) {\n let o = r[e];\n return o && o.list && o.list.b ? o.list.b : t10;\n}\nvar rf = class {\n constructor(e, t10, o) {\n this.node = e, this.tensorMap = t10, this.context = o, this.inputs = [], this.attrs = {}, this.inputs = e.inputNames.map((n) => this.getInput(n)), e.rawAttrs != null && (this.attrs = Object.keys(e.rawAttrs).reduce((n, s) => (n[s] = this.getAttr(s), n), {}));\n }\n getInput(e) {\n return Gt(e, this.tensorMap, this.context);\n }\n getAttr(e, t10) {\n let o = this.node.rawAttrs[e];\n if (o.tensor != null)\n return Gt(e, this.tensorMap, this.context);\n if (o.i != null || o.f != null)\n return jd(this.node.rawAttrs, e, t10);\n if (o.s != null)\n return Kd(this.node.rawAttrs, e, t10);\n if (o.b != null)\n return qd(this.node.rawAttrs, e, t10);\n if (o.shape != null)\n return Qd(this.node.rawAttrs, e, t10);\n if (o.type != null)\n return Xd(this.node.rawAttrs, e, t10);\n if (o.list != null) {\n if (o.list.i != null || o.list.f != null)\n return Zd(this.node.rawAttrs, e, t10);\n if (o.list.s != null)\n return Jd(this.node.rawAttrs, e, t10);\n if (o.list.shape != null)\n return ef(this.node.rawAttrs, e, t10);\n if (o.list.b != null)\n return tf(this.node.rawAttrs, e, t10);\n if (o.list.type != null)\n return Yd(this.node.rawAttrs, e, t10);\n }\n return t10;\n }\n};\nvar Ye = {};\nGe(Ye, { OP_SCOPE_SUFFIX: () => jb, abs: () => Yt, acos: () => G0, acosh: () => H0, add: () => be, addN: () => K0, all: () => q0, any: () => j0, argMax: () => X0, argMin: () => Y0, asin: () => Q0, asinh: () => Z0, atan: () => J0, atan2: () => ev, atanh: () => tv, avgPool: () => qm, avgPool3d: () => nv, basicLSTMCell: () => sv, batchNorm: () => _i, batchNorm2d: () => iv, batchNorm3d: () => uv, batchNorm4d: () => pv, batchToSpaceND: () => jm, bincount: () => Xm, booleanMaskAsync: () => VG, broadcastArgs: () => cv, broadcastTo: () => $i, buffer: () => le, cast: () => je, ceil: () => lv, clipByValue: () => mv, clone: () => Lr, complex: () => Tr, concat: () => xt, concat1d: () => dv, concat2d: () => fv, concat3d: () => hv, concat4d: () => gv, conv1d: () => xv, conv2d: () => Ei, conv2dTranspose: () => yv, conv3d: () => bv, conv3dTranspose: () => Sv, cos: () => wv, cosh: () => Iv, cosineWindow: () => al, cumprod: () => vv, cumsum: () => kv, denseBincount: () => Nv, depthToSpace: () => Tv, depthwiseConv2d: () => Bp, diag: () => _v, dilation2d: () => $v, div: () => He, divNoNan: () => Av, dot: () => Rv, dropout: () => ZG, einsum: () => Dv, elu: () => Jm, enclosingPowerOfTwo: () => CC, equal: () => Zm, erf: () => Fv, euclideanNorm: () => Mv, exp: () => So, expandDims: () => Ra, expm1: () => Lv, eye: () => ed, fft: () => zp, fill: () => Us, floor: () => td, floorDiv: () => Km, fused: () => SC, gather: () => rd, gatherND: () => YG, greater: () => uu, greaterEqual: () => od, ifft: () => du, imag: () => Ri, image: () => eK, inTopKAsync: () => eH, irfft: () => Td, isFinite: () => Bv, isInf: () => Vv, isNaN: () => zv, leakyRelu: () => nd, less: () => Wv, lessEqual: () => Vp, linalg: () => tK, linspace: () => Uv, localResponseNormalization: () => Gv, log: () => Da, log1p: () => sd, logSigmoid: () => Hv, logSoftmax: () => Kv, logSumExp: () => ud, logicalAnd: () => pu, logicalNot: () => pd, logicalOr: () => cd, logicalXor: () => qv, losses: () => rK, lowerBound: () => jv, matMul: () => Xe, max: () => Gs, maxPool: () => md, maxPool3d: () => Xv, maxPoolWithArgmax: () => Yv, maximum: () => dd, mean: () => cu, meshgrid: () => Qv, min: () => rl, minimum: () => fd, mirrorPad: () => Zv, mod: () => Jv, moments: () => ek, movingAverage: () => UG, mul: () => ne, multiRNNCell: () => tk, multinomial: () => rk, neg: () => Cr, norm: () => iu, notEqual: () => hd, oneHot: () => nl, ones: () => Hs, onesLike: () => ok, op: () => N, outerProduct: () => nk, pad: () => Ks, pad1d: () => sk, pad2d: () => ak, pad3d: () => ik, pad4d: () => uk, pool: () => pk, pow: () => Aa, prelu: () => xd, print: () => Hm, prod: () => ck, raggedGather: () => lk, raggedRange: () => mk, raggedTensorToTensor: () => dk, rand: () => fk, randomGamma: () => Ok, randomNormal: () => Id, randomStandardNormal: () => Pk, randomUniform: () => vd, range: () => Di, real: () => Fa, reciprocal: () => Mk, relu: () => Fi, relu6: () => kd, reshape: () => W, reverse: () => no, reverse1d: () => Lk, reverse2d: () => Bk, reverse3d: () => Vk, reverse4d: () => zk, rfft: () => Wp, round: () => Nd, rsqrt: () => Wk, scalar: () => Ce, scatterND: () => HG, searchSorted: () => ol, selu: () => Uk, separableConv2d: () => Gk, setdiff1dAsync: () => Hk, sigmoid: () => Ws, sign: () => Kk, signal: () => JH, sin: () => qk, sinh: () => jk, slice: () => Ke, slice1d: () => Xk, slice2d: () => Yk, slice3d: () => Qk, slice4d: () => Zk, softmax: () => Jk, softplus: () => id, spaceToBatchND: () => gd, sparse: () => oK, sparseToDense: () => jG, spectral: () => ZH, split: () => Oa, sqrt: () => $r, square: () => Qt, squaredDifference: () => _d, squeeze: () => Up, stack: () => Sr, step: () => $d, stridedSlice: () => e1, string: () => nK, sub: () => ke, sum: () => et, tan: () => t1, tanh: () => tl, tensor: () => nr, tensor1d: () => dr, tensor2d: () => Oi, tensor3d: () => Ed, tensor4d: () => r1, tensor5d: () => o1, tensor6d: () => n1, tile: () => Ai, topk: () => s1, transpose: () => Gp, truncatedNormal: () => a1, unique: () => i1, unsortedSegmentSum: () => u1, unstack: () => so, upperBound: () => p1, variable: () => c1, where: () => ss, whereAsync: () => Rd, zeros: () => Br, zerosLike: () => Ut });\nvar FN = (r, e, t10, o = Ye) => {\n switch (r.op) {\n case \"BiasAdd\":\n case \"AddV2\":\n case \"Add\":\n return [o.add(I(\"a\", r, e, t10), I(\"b\", r, e, t10))];\n case \"AddN\":\n return [o.addN(I(\"tensors\", r, e, t10))];\n case \"FloorMod\":\n case \"Mod\":\n return [o.mod(I(\"a\", r, e, t10), I(\"b\", r, e, t10))];\n case \"Mul\":\n return [o.mul(I(\"a\", r, e, t10), I(\"b\", r, e, t10))];\n case \"RealDiv\":\n case \"Div\":\n return [o.div(I(\"a\", r, e, t10), I(\"b\", r, e, t10))];\n case \"DivNoNan\":\n return [o.divNoNan(I(\"a\", r, e, t10), I(\"b\", r, e, t10))];\n case \"FloorDiv\":\n return [o.floorDiv(I(\"a\", r, e, t10), I(\"b\", r, e, t10))];\n case \"Sub\":\n return [o.sub(I(\"a\", r, e, t10), I(\"b\", r, e, t10))];\n case \"Minimum\":\n return [o.minimum(I(\"a\", r, e, t10), I(\"b\", r, e, t10))];\n case \"Maximum\":\n return [o.maximum(I(\"a\", r, e, t10), I(\"b\", r, e, t10))];\n case \"Pow\":\n return [o.pow(I(\"a\", r, e, t10), I(\"b\", r, e, t10))];\n case \"SquaredDifference\":\n return [o.squaredDifference(I(\"a\", r, e, t10), I(\"b\", r, e, t10))];\n default:\n throw TypeError(`Node type ${r.op} is not implemented`);\n }\n};\nvar ON = (r, e, t10, o = Ye) => {\n switch (r.op) {\n case \"Abs\":\n case \"ComplexAbs\":\n return [o.abs(I(\"x\", r, e, t10))];\n case \"Acos\":\n return [o.acos(I(\"x\", r, e, t10))];\n case \"Acosh\":\n return [o.acosh(I(\"x\", r, e, t10))];\n case \"Asin\":\n return [o.asin(I(\"x\", r, e, t10))];\n case \"Asinh\":\n return [o.asinh(I(\"x\", r, e, t10))];\n case \"Atan\":\n return [o.atan(I(\"x\", r, e, t10))];\n case \"Atan2\":\n return [o.atan2(I(\"x\", r, e, t10), I(\"y\", r, e, t10))];\n case \"Atanh\":\n return [o.atanh(I(\"x\", r, e, t10))];\n case \"Ceil\":\n return [o.ceil(I(\"x\", r, e, t10))];\n case \"Complex\":\n return [o.complex(I(\"real\", r, e, t10), I(\"imag\", r, e, t10))];\n case \"Cos\":\n return [o.cos(I(\"x\", r, e, t10))];\n case \"Cosh\":\n return [o.cosh(I(\"x\", r, e, t10))];\n case \"Elu\":\n return [o.elu(I(\"x\", r, e, t10))];\n case \"Erf\":\n return [o.erf(I(\"x\", r, e, t10))];\n case \"Exp\":\n return [o.exp(I(\"x\", r, e, t10))];\n case \"Expm1\":\n return [o.expm1(I(\"x\", r, e, t10))];\n case \"Floor\":\n return [o.floor(I(\"x\", r, e, t10))];\n case \"Log\":\n return [o.log(I(\"x\", r, e, t10))];\n case \"Log1p\":\n return [o.log1p(I(\"x\", r, e, t10))];\n case \"Imag\":\n return [o.imag(I(\"x\", r, e, t10))];\n case \"Neg\":\n return [o.neg(I(\"x\", r, e, t10))];\n case \"Reciprocal\":\n return [o.reciprocal(I(\"x\", r, e, t10))];\n case \"Real\":\n return [o.real(I(\"x\", r, e, t10))];\n case \"Relu\":\n return [o.relu(I(\"x\", r, e, t10))];\n case \"Round\":\n return [o.round(I(\"x\", r, e, t10))];\n case \"Selu\":\n return [o.selu(I(\"x\", r, e, t10))];\n case \"Sigmoid\":\n return [o.sigmoid(I(\"x\", r, e, t10))];\n case \"Sin\":\n return [o.sin(I(\"x\", r, e, t10))];\n case \"Sign\":\n return [o.sign(I(\"x\", r, e, t10))];\n case \"Sinh\":\n return [o.sinh(I(\"x\", r, e, t10))];\n case \"Softplus\":\n return [o.softplus(I(\"x\", r, e, t10))];\n case \"Sqrt\":\n return [o.sqrt(I(\"x\", r, e, t10))];\n case \"Square\":\n return [o.square(I(\"x\", r, e, t10))];\n case \"Tanh\":\n return [o.tanh(I(\"x\", r, e, t10))];\n case \"Tan\":\n return [o.tan(I(\"x\", r, e, t10))];\n case \"ClipByValue\":\n return [o.clipByValue(I(\"x\", r, e, t10), I(\"clipValueMin\", r, e, t10), I(\"clipValueMax\", r, e, t10))];\n case \"Relu6\":\n return [o.relu6(I(\"x\", r, e, t10))];\n case \"Rsqrt\":\n return [o.rsqrt(Gt(r.inputNames[0], e, t10))];\n case \"Prod\":\n return [o.prod(I(\"x\", r, e, t10), I(\"axes\", r, e, t10))];\n case \"LeakyRelu\":\n return [o.leakyRelu(I(\"x\", r, e, t10), I(\"alpha\", r, e, t10))];\n case \"Prelu\":\n return [o.prelu(I(\"x\", r, e, t10), I(\"alpha\", r, e, t10))];\n case \"IsNan\":\n return [o.isNaN(Gt(r.inputNames[0], e, t10))];\n default:\n throw TypeError(`Node type ${r.op} is not implemented`);\n }\n};\nfunction Vr(r, e, t10 = \"\") {\n if (!(typeof r == \"number\" || typeof e == \"number\")) {\n y.assert(r.length === e.length, () => t10 + ` Shapes ${r} and ${e} must match`);\n for (let o = 0; o < r.length; o++) {\n let n = r[o], s = e[o];\n y.assert(n < 0 || s < 0 || n === s, () => t10 + ` Shapes ${r} and ${e} must match`);\n }\n }\n}\nfunction PN(r) {\n return !(typeof r == \"number\" || r.some((e) => e < 0));\n}\nfunction Hp(r, e, t10) {\n let o = of(r, t10), n = !PN(o);\n if (n && e.length === 0)\n throw new Error(`Tried to calculate elements of an empty list with non-fully-defined elementShape: ${o}`);\n if (n && e.forEach((s) => {\n o = of(s.shape, o);\n }), !PN(o))\n throw new Error(`Non-fully-defined elementShape: ${o}`);\n return o;\n}\nfunction of(r, e) {\n if (typeof r == \"number\")\n return e;\n if (typeof e == \"number\")\n return r;\n if (r.length !== e.length)\n throw new Error(`Incompatible ranks during merge: ${r} vs. ${e}`);\n let t10 = [];\n for (let o = 0; o < r.length; ++o) {\n let n = r[o], s = e[o];\n if (n >= 0 && s >= 0 && n !== s)\n throw new Error(`Incompatible shape during merge: ${r} vs. ${e}`);\n t10[o] = n >= 0 ? n : s;\n }\n return t10;\n}\nvar nf = class {\n constructor(e, t10, o, n, s, a, i) {\n this.name = e, this.dtype = t10, this.maxSize = o, this.elementShape = n, this.identicalElementShapes = s, this.dynamicSize = a, this.clearAfterRead = i, this.tensors = [], this.closed_ = false, this.idTensor = Ce(0), _r(this.idTensor);\n }\n get id() {\n return this.idTensor.id;\n }\n get closed() {\n return this.closed_;\n }\n clearAndClose(e) {\n this.tensors.forEach((t10) => {\n (e == null || !e.has(t10.tensor.id)) && t10.tensor.dispose();\n }), this.tensors = [], this.closed_ = true, this.idTensor.dispose();\n }\n size() {\n return this.tensors.length;\n }\n read(e) {\n if (this.closed_)\n throw new Error(`TensorArray ${this.name} has already been closed.`);\n if (e < 0 || e >= this.size())\n throw new Error(`Tried to read from index ${e}, but array size is: ${this.size()}`);\n let t10 = this.tensors[e];\n if (t10.cleared)\n throw new Error(`TensorArray ${this.name}: Could not read index ${e} twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).`);\n return this.clearAfterRead && (t10.cleared = true), t10.read = true, t10.tensor;\n }\n readMany(e) {\n return e.map((t10) => this.read(t10));\n }\n write(e, t10) {\n if (this.closed_)\n throw new Error(`TensorArray ${this.name} has already been closed.`);\n if (e < 0 || !this.dynamicSize && e >= this.maxSize)\n throw new Error(`Tried to write to index ${e}, but array is not resizeable and size is: ${this.maxSize}`);\n let o = this.tensors[e] || {};\n if (t10.dtype !== this.dtype)\n throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e},\n because the value dtype is ${t10.dtype}, but TensorArray dtype is ${this.dtype}.`);\n if (this.size() === 0 && (this.elementShape == null || this.elementShape.length === 0) && (this.elementShape = t10.shape), Vr(this.elementShape, t10.shape, `TensorArray ${this.name}: Could not write to TensorArray index ${e}.`), o.read)\n throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, because it has already been read.`);\n if (o.written)\n throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, because it has already been written.`);\n o.tensor = t10, _r(t10), o.written = true, this.tensors[e] = o;\n }\n writeMany(e, t10) {\n if (e.length !== t10.length)\n throw new Error(`TensorArray ${this.name}: could not write multiple tensors,because the index size: ${e.length} is not the same as tensors size: ${t10.length}.`);\n e.forEach((o, n) => this.write(o, t10[n]));\n }\n gather(e, t10) {\n if (t10 && t10 !== this.dtype)\n throw new Error(`TensorArray dtype is ${this.dtype} but gather requested dtype ${t10}`);\n if (e)\n e = e.slice(0, this.size());\n else {\n e = [];\n for (let n = 0; n < this.size(); n++)\n e.push(n);\n }\n if (e.length === 0)\n return nr([], [0].concat(this.elementShape));\n let o = this.readMany(e);\n return Vr(this.elementShape, o[0].shape, \"TensorArray shape mismatch: \"), Sr(o, 0);\n }\n concat(e) {\n if (e && e !== this.dtype)\n throw new Error(`TensorArray dtype is ${this.dtype} but concat requested dtype ${e}`);\n if (this.size() === 0)\n return nr([], [0].concat(this.elementShape));\n let t10 = [];\n for (let n = 0; n < this.size(); n++)\n t10.push(n);\n let o = this.readMany(t10);\n return Vr(this.elementShape, o[0].shape, `TensorArray shape mismatch: tensor array shape (${this.elementShape}) vs first tensor shape (${o[0].shape})`), xt(o, 0);\n }\n scatter(e, t10) {\n if (t10.dtype !== this.dtype)\n throw new Error(`TensorArray dtype is ${this.dtype} but tensor has dtype ${t10.dtype}`);\n if (e.length !== t10.shape[0])\n throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${e.length} vs. ${t10.shape[0]}`);\n let o = Math.max(...e);\n if (!this.dynamicSize && o >= this.maxSize)\n throw new Error(`Max index must be < array size (${o} vs. ${this.maxSize})`);\n this.writeMany(e, so(t10, 0));\n }\n split(e, t10) {\n if (t10.dtype !== this.dtype)\n throw new Error(`TensorArray dtype is ${this.dtype} but tensor has dtype ${t10.dtype}`);\n let o = 0, n = e.map((p) => (o += p, o));\n if (o !== t10.shape[0])\n throw new Error(`Expected sum of lengths to be equal to\n tensor.shape[0], but sum of lengths is\n ${o}, and tensor's shape is: ${t10.shape}`);\n if (!this.dynamicSize && e.length !== this.maxSize)\n throw new Error(`TensorArray's size is not equal to the size of lengths (${this.maxSize} vs. ${e.length}), and the TensorArray is not marked as dynamically resizeable`);\n let s = o === 0 ? 0 : t10.size / o, a = [];\n Ee(() => {\n t10 = W(t10, [1, o, s]);\n for (let p = 0; p < e.length; ++p) {\n let c = [0, p === 0 ? 0 : n[p - 1], 0], l = [1, e[p], s];\n a[p] = W(Ke(t10, c, l), this.elementShape);\n }\n return a;\n });\n let i = [];\n for (let p = 0; p < e.length; p++)\n i[p] = p;\n this.writeMany(i, a);\n }\n};\nvar Ba = class {\n constructor(e, t10, o, n = -1) {\n this.tensors = e, this.elementShape = t10, this.elementDtype = o, e != null && e.forEach((s) => {\n if (o !== s.dtype)\n throw new Error(`Invalid data types; op elements ${o}, but list elements ${s.dtype}`);\n Vr(t10, s.shape, \"TensorList shape mismatch: \"), _r(s);\n }), this.idTensor = Ce(0), this.maxNumElements = n, _r(this.idTensor);\n }\n get id() {\n return this.idTensor.id;\n }\n copy() {\n return new Ba([...this.tensors], this.elementShape, this.elementDtype);\n }\n clearAndClose(e) {\n this.tensors.forEach((t10) => {\n (e == null || !e.has(t10.id)) && t10.dispose();\n }), this.tensors.length = 0, this.idTensor.dispose();\n }\n size() {\n return this.tensors.length;\n }\n stack(e, t10, o = -1) {\n if (t10 !== this.elementDtype)\n throw new Error(`Invalid data types; op elements ${t10}, but list elements ${this.elementDtype}`);\n if (o !== -1 && this.tensors.length !== o)\n throw new Error(`Operation expected a list with ${o} elements but got a list with ${this.tensors.length} elements.`);\n Vr(e, this.elementShape, \"TensorList shape mismatch: \");\n let n = Hp(this.elementShape, this.tensors, e);\n return Ee(() => {\n let s = this.tensors.map((a) => W(a, n));\n return Sr(s, 0);\n });\n }\n popBack(e, t10) {\n if (t10 !== this.elementDtype)\n throw new Error(`Invalid data types; op elements ${t10}, but list elements ${this.elementDtype}`);\n if (this.size() === 0)\n throw new Error(\"Trying to pop from an empty list.\");\n let o = Hp(this.elementShape, this.tensors, e), n = this.tensors.pop();\n return n.kept = false, Vr(n.shape, e, \"TensorList shape mismatch: \"), W(n, o);\n }\n pushBack(e) {\n if (e.dtype !== this.elementDtype)\n throw new Error(`Invalid data types; op elements ${e.dtype}, but list elements ${this.elementDtype}`);\n if (Vr(e.shape, this.elementShape, \"TensorList shape mismatch: \"), this.maxNumElements === this.size())\n throw new Error(\"Trying to push element into a full list.\");\n _r(e), this.tensors.push(e);\n }\n resize(e) {\n if (e < 0)\n throw new Error(`TensorListResize expects size to be non-negative. Got: ${e}`);\n if (this.maxNumElements !== -1 && e > this.maxNumElements)\n throw new Error(`TensorListResize input size ${e} is greater maxNumElement ${this.maxNumElements}.`);\n let t10 = new Ba([], this.elementShape, this.elementDtype, this.maxNumElements);\n t10.tensors.length = e;\n for (let o = 0; o < Math.min(this.tensors.length, e); ++o)\n t10.tensors[o] = this.tensors[o];\n return t10;\n }\n getItem(e, t10, o) {\n if (o !== this.elementDtype)\n throw new Error(`Invalid data types; op elements ${o}, but list elements ${this.elementDtype}`);\n if (e < 0 || e > this.tensors.length)\n throw new Error(`Trying to access element ${e} in a list with ${this.tensors.length} elements.`);\n if (this.tensors[e] == null)\n throw new Error(`element at index ${e} is null.`);\n Vr(this.tensors[e].shape, t10, \"TensorList shape mismatch: \");\n let n = Hp(this.elementShape, this.tensors, t10);\n return W(this.tensors[e], n);\n }\n setItem(e, t10) {\n if (t10.dtype !== this.elementDtype)\n throw new Error(`Invalid data types; op elements ${t10.dtype}, but list elements ${this.elementDtype}`);\n if (e < 0 || this.maxNumElements !== -1 && e >= this.maxNumElements)\n throw new Error(`Trying to set element ${e} in a list with max ${this.maxNumElements} elements.`);\n Vr(this.elementShape, t10.shape, \"TensorList shape mismatch: \"), _r(t10), this.tensors[e] != null && (this.tensors[e].kept = false), this.tensors[e] = t10;\n }\n gather(e, t10, o) {\n if (t10 !== this.elementDtype)\n throw new Error(`Invalid data types; op elements ${t10}, but list elements ${this.elementDtype}`);\n Vr(this.elementShape, o, \"TensorList shape mismatch: \"), e = e.slice(0, this.size());\n let n = Hp(this.elementShape, this.tensors, o);\n return e.length === 0 ? nr([], [0].concat(n)) : Ee(() => {\n let s = e.map((a) => W(this.tensors[a], n));\n return Sr(s, 0);\n });\n }\n concat(e, t10) {\n if (e && e !== this.elementDtype)\n throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${e}`);\n Vr(this.elementShape, t10, \"TensorList shape mismatch: \");\n let o = Hp(this.elementShape, this.tensors, t10);\n return this.size() === 0 ? nr([], [0].concat(o)) : Ee(() => {\n let n = this.tensors.map((s) => W(s, o));\n return xt(n, 0);\n });\n }\n};\nfunction MN(r, e, t10) {\n let o = r.dtype;\n if (r.shape.length < 1)\n throw new Error(`Tensor must be at least a vector, but saw shape: ${r.shape}`);\n if (r.dtype !== t10)\n throw new Error(`Invalid data types; op elements ${r.dtype}, but list elements ${t10}`);\n let n = r.shape.slice(1);\n Vr(n, e, \"TensorList shape mismatch: \");\n let s = so(r);\n return new Ba(s, e, o);\n}\nfunction LN(r, e, t10, o) {\n return new Ba([], r, e, o);\n}\nfunction BN(r, e, t10, o) {\n if (e.length !== r.shape[0])\n throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${e.length} vs. ${r.shape[0]}`);\n let n = Math.max(...e);\n if (o != null && o !== -1 && n >= o)\n throw new Error(`Max index must be < array size (${n} vs. ${o})`);\n let s = new Ba([], t10, r.dtype, o), a = so(r, 0);\n return e.forEach((i, p) => {\n s.setItem(i, a[p]);\n }), s;\n}\nfunction VN(r, e, t10) {\n let o = 0, n = e.map((c) => (o += c, o));\n if (o !== r.shape[0])\n throw new Error(`Expected sum of lengths to be equal to\n tensor.shape[0], but sum of lengths is\n ${o}, and tensor's shape is: ${r.shape}`);\n let s = r.shape.slice(1), a = of(s, t10), i = o === 0 ? 0 : r.size / o, p = Ee(() => {\n let c = [];\n r = W(r, [1, o, i]);\n for (let l = 0; l < e.length; ++l) {\n let d = [0, l === 0 ? 0 : n[l - 1], 0], f = [1, e[l], i];\n c[l] = W(Ke(r, d, f), a);\n }\n return r.dispose(), c;\n }), u = new Ba([], t10, r.dtype, e.length);\n for (let c = 0; c < p.length; c++)\n u.setItem(c, p[c]);\n return u;\n}\nvar zN = async (r, e, t10) => {\n switch (r.op) {\n case \"If\":\n case \"StatelessIf\": {\n let o = I(\"thenBranch\", r, e, t10), n = I(\"elseBranch\", r, e, t10), s = I(\"cond\", r, e, t10), a = I(\"args\", r, e, t10);\n return (await s.data())[0] ? t10.functionMap[o].executeFunctionAsync(a, t10.tensorArrayMap, t10.tensorListMap) : t10.functionMap[n].executeFunctionAsync(a, t10.tensorArrayMap, t10.tensorListMap);\n }\n case \"While\":\n case \"StatelessWhile\": {\n let o = I(\"body\", r, e, t10), n = I(\"cond\", r, e, t10), s = I(\"args\", r, e, t10), a = await t10.functionMap[n].executeFunctionAsync(s, t10.tensorArrayMap, t10.tensorListMap), i = s.map((c) => c.id), p = await a[0].data();\n a.forEach((c) => {\n !c.kept && i.indexOf(c.id) === -1 && c.dispose();\n });\n let u = s;\n for (; p[0]; ) {\n let c = u;\n u = await t10.functionMap[o].executeFunctionAsync(u, t10.tensorArrayMap, t10.tensorListMap);\n let l = u.map((d) => d.id);\n c.forEach((d) => {\n !d.kept && i.indexOf(d.id) === -1 && l.indexOf(d.id) === -1 && d.dispose();\n });\n let m = await t10.functionMap[n].executeFunctionAsync(u, t10.tensorArrayMap, t10.tensorListMap);\n p = await m[0].data(), m.forEach((d) => {\n !d.kept && i.indexOf(d.id) === -1 && l.indexOf(d.id) === -1 && d.dispose();\n });\n }\n return u;\n }\n case \"LoopCond\": {\n let o = I(\"pred\", r, e, t10);\n return [is(o)];\n }\n case \"Switch\": {\n let o = I(\"pred\", r, e, t10), n = I(\"data\", r, e, t10);\n return n.kept || (n = is(n)), (await o.data())[0] ? [void 0, n] : [n, void 0];\n }\n case \"Merge\": {\n let o = r.inputNames.find((n) => Gt(n, e, t10) !== void 0);\n if (o) {\n let n = Gt(o, e, t10);\n return [is(n)];\n }\n return;\n }\n case \"Enter\": {\n let o = I(\"frameName\", r, e, t10), n = I(\"tensor\", r, e, t10);\n return t10.enterFrame(o), [is(n)];\n }\n case \"Exit\": {\n let o = I(\"tensor\", r, e, t10);\n return t10.exitFrame(), [is(o)];\n }\n case \"NextIteration\": {\n let o = I(\"tensor\", r, e, t10);\n return t10.nextIteration(), [is(o)];\n }\n case \"TensorArrayV3\": {\n let o = I(\"size\", r, e, t10), n = I(\"dtype\", r, e, t10), s = I(\"elementShape\", r, e, t10), a = I(\"dynamicSize\", r, e, t10), i = I(\"clearAfterRead\", r, e, t10), p = I(\"identicalElementShapes\", r, e, t10), u = I(\"name\", r, e, t10), c = new nf(u, n, o, s, p, a, i);\n return t10.addTensorArray(c), [c.idTensor, Ce(1)];\n }\n case \"TensorArrayWriteV3\": {\n let o = I(\"tensorArrayId\", r, e, t10), n = I(\"index\", r, e, t10), s = I(\"tensor\", r, e, t10), a = t10.getTensorArray(o.id);\n return a.write(n, s), [a.idTensor];\n }\n case \"TensorArrayReadV3\": {\n let o = I(\"tensorArrayId\", r, e, t10), n = I(\"index\", r, e, t10);\n return [t10.getTensorArray(o.id).read(n)];\n }\n case \"TensorArrayGatherV3\": {\n let o = I(\"tensorArrayId\", r, e, t10), n = I(\"indices\", r, e, t10), s = I(\"dtype\", r, e, t10);\n return [t10.getTensorArray(o.id).gather(n, s)];\n }\n case \"TensorArrayScatterV3\": {\n let o = I(\"tensorArrayId\", r, e, t10), n = I(\"indices\", r, e, t10), s = I(\"tensor\", r, e, t10), a = t10.getTensorArray(o.id);\n return a.scatter(n, s), [a.idTensor];\n }\n case \"TensorArrayConcatV3\": {\n let o = I(\"tensorArrayId\", r, e, t10), n = t10.getTensorArray(o.id), s = I(\"dtype\", r, e, t10);\n return [n.concat(s)];\n }\n case \"TensorArraySplitV3\": {\n let o = I(\"tensorArrayId\", r, e, t10), n = I(\"tensor\", r, e, t10), s = I(\"lengths\", r, e, t10), a = t10.getTensorArray(o.id);\n return a.split(s, n), [a.idTensor];\n }\n case \"TensorArraySizeV3\": {\n let o = I(\"tensorArrayId\", r, e, t10), n = t10.getTensorArray(o.id);\n return [Ce(n.size(), \"int32\")];\n }\n case \"TensorArrayCloseV3\": {\n let o = I(\"tensorArrayId\", r, e, t10), n = t10.getTensorArray(o.id);\n return n.clearAndClose(), [n.idTensor];\n }\n case \"TensorListSetItem\": {\n let o = I(\"tensorListId\", r, e, t10), n = I(\"index\", r, e, t10), s = I(\"tensor\", r, e, t10), a = t10.getTensorList(o.id);\n return a.setItem(n, s), [a.idTensor];\n }\n case \"TensorListGetItem\": {\n let o = I(\"tensorListId\", r, e, t10), n = I(\"index\", r, e, t10), s = I(\"elementShape\", r, e, t10), a = I(\"elementDType\", r, e, t10);\n return [t10.getTensorList(o.id).getItem(n, s, a)];\n }\n case \"TensorListScatterV2\":\n case \"TensorListScatter\": {\n let o = I(\"indices\", r, e, t10), n = I(\"tensor\", r, e, t10), s = I(\"elementShape\", r, e, t10), a = I(\"numElements\", r, e, t10), i = BN(n, o, s, a);\n return t10.addTensorList(i), [i.idTensor];\n }\n case \"TensorListReserve\":\n case \"EmptyTensorList\": {\n let o = I(\"elementShape\", r, e, t10), n = I(\"elementDType\", r, e, t10), s;\n r.op === \"TensorListReserve\" ? s = \"numElements\" : s = \"maxNumElements\";\n let a = I(s, r, e, t10), i = r.op === \"TensorListReserve\" ? -1 : a, p = LN(o, n, a, i);\n return t10.addTensorList(p), [p.idTensor];\n }\n case \"TensorListGather\": {\n let o = I(\"tensorListId\", r, e, t10), n = I(\"indices\", r, e, t10), s = I(\"elementShape\", r, e, t10), a = I(\"elementDType\", r, e, t10);\n return [t10.getTensorList(o.id).gather(n, a, s)];\n }\n case \"TensorListStack\": {\n let o = I(\"tensorListId\", r, e, t10), n = I(\"elementShape\", r, e, t10), s = I(\"elementDType\", r, e, t10), a = I(\"numElements\", r, e, t10);\n return [t10.getTensorList(o.id).stack(n, s, a)];\n }\n case \"TensorListFromTensor\": {\n let o = I(\"tensor\", r, e, t10), n = I(\"elementShape\", r, e, t10), s = I(\"elementDType\", r, e, t10), a = MN(o, n, s);\n return t10.addTensorList(a), [a.idTensor];\n }\n case \"TensorListConcat\":\n case \"TensorListConcatV2\": {\n let o = I(\"tensorListId\", r, e, t10), n = t10.getTensorList(o.id), s = I(\"dtype\", r, e, t10), a = I(\"elementShape\", r, e, t10);\n return [n.concat(s, a)];\n }\n case \"TensorListPushBack\": {\n let o = I(\"tensorListId\", r, e, t10), n = I(\"tensor\", r, e, t10), s = t10.getTensorList(o.id);\n return s.pushBack(n), [s.idTensor];\n }\n case \"TensorListPopBack\": {\n let o = I(\"tensorListId\", r, e, t10), n = I(\"elementShape\", r, e, t10), s = I(\"elementDType\", r, e, t10);\n return [t10.getTensorList(o.id).popBack(n, s)];\n }\n case \"TensorListSplit\": {\n let o = I(\"tensor\", r, e, t10), n = I(\"elementShape\", r, e, t10), s = I(\"lengths\", r, e, t10), a = VN(o, s, n);\n return t10.addTensorList(a), [a.idTensor];\n }\n case \"TensorListLength\": {\n let o = I(\"tensorListId\", r, e, t10), n = t10.getTensorList(o.id);\n return [Ce(n.size(), \"int32\")];\n }\n case \"TensorListResize\": {\n let o = I(\"tensorListId\", r, e, t10), n = I(\"size\", r, e, t10), a = t10.getTensorList(o.id).resize(n);\n return t10.addTensorList(a), [a.idTensor];\n }\n default:\n throw TypeError(`Node type ${r.op} is not implemented`);\n }\n};\nfunction WN(r, e, t10) {\n let [o, n] = I(\"fusedOps\", r, e, t10), s = o === \"biasadd\", a = !s, i = n === \"prelu\", p = o === \"fusedbatchnorm\", u = I(\"numArgs\", r, e, t10);\n if (s) {\n if (i && u !== 2)\n throw new Error(\"FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.\");\n if (!i && s && u !== 1)\n throw new Error(\"FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.\");\n }\n if (p)\n throw new Error(\"FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported\");\n let c = I(\"strides\", r, e, t10), l = ll(r, e, t10), m = I(\"dataFormat\", r, e, t10).toUpperCase(), d = I(\"dilations\", r, e, t10), [f, h] = I(\"args\", r, e, t10);\n a && (h = f, f = void 0);\n let g = I(\"leakyreluAlpha\", r, e, t10);\n return { stride: c, pad: l, dataFormat: m, dilations: d, biasArg: f, preluArg: h, activationFunc: n, leakyreluAlpha: g };\n}\nvar UN = (r, e, t10, o = Ye) => {\n switch (r.op) {\n case \"Conv1D\": {\n let n = I(\"stride\", r, e, t10), s = I(\"pad\", r, e, t10), a = I(\"dataFormat\", r, e, t10).toUpperCase(), i = I(\"dilation\", r, e, t10);\n return [o.conv1d(I(\"x\", r, e, t10), I(\"filter\", r, e, t10), n, s, a, i)];\n }\n case \"Conv2D\": {\n let n = I(\"strides\", r, e, t10), s = ll(r, e, t10), a = I(\"dataFormat\", r, e, t10).toUpperCase(), i = I(\"dilations\", r, e, t10);\n return [o.conv2d(I(\"x\", r, e, t10), I(\"filter\", r, e, t10), [n[1], n[2]], s, a, [i[1], i[2]])];\n }\n case \"_FusedConv2D\": {\n let { stride: n, pad: s, dataFormat: a, dilations: i, biasArg: p, preluArg: u, activationFunc: c, leakyreluAlpha: l } = WN(r, e, t10);\n return [o.fused.conv2d({ x: I(\"x\", r, e, t10), filter: I(\"filter\", r, e, t10), strides: [n[1], n[2]], pad: s, dataFormat: a, dilations: [i[1], i[2]], bias: p, activation: c, preluActivationWeights: u, leakyreluAlpha: l })];\n }\n case \"FusedDepthwiseConv2dNative\": {\n let { stride: n, pad: s, dataFormat: a, dilations: i, biasArg: p, preluArg: u, activationFunc: c, leakyreluAlpha: l } = WN(r, e, t10);\n return [o.fused.depthwiseConv2d({ x: I(\"x\", r, e, t10), filter: I(\"filter\", r, e, t10), strides: [n[1], n[2]], pad: s, dataFormat: a, dilations: [i[1], i[2]], bias: p, activation: c, preluActivationWeights: u, leakyreluAlpha: l })];\n }\n case \"Conv2DBackpropInput\":\n case \"Conv2dTranspose\": {\n let n = I(\"outputShape\", r, e, t10), s = I(\"strides\", r, e, t10), a = ll(r, e, t10);\n return [o.conv2dTranspose(I(\"x\", r, e, t10), I(\"filter\", r, e, t10), n, [s[1], s[2]], a)];\n }\n case \"DepthwiseConv2dNative\":\n case \"DepthwiseConv2d\": {\n let n = I(\"strides\", r, e, t10), s = ll(r, e, t10), a = I(\"dilations\", r, e, t10), i = I(\"dataFormat\", r, e, t10).toUpperCase();\n return [o.depthwiseConv2d(I(\"input\", r, e, t10), I(\"filter\", r, e, t10), [n[1], n[2]], s, i, [a[1], a[2]])];\n }\n case \"Conv3D\": {\n let n = I(\"strides\", r, e, t10), s = I(\"pad\", r, e, t10), a = I(\"dataFormat\", r, e, t10).toUpperCase(), i = I(\"dilations\", r, e, t10);\n return [o.conv3d(I(\"x\", r, e, t10), I(\"filter\", r, e, t10), [n[1], n[2], n[3]], s, a, [i[1], i[2], i[3]])];\n }\n case \"AvgPool\": {\n let n = I(\"strides\", r, e, t10), s = I(\"pad\", r, e, t10), a = I(\"kernelSize\", r, e, t10);\n return [o.avgPool(I(\"x\", r, e, t10), [a[1], a[2]], [n[1], n[2]], s)];\n }\n case \"MaxPool\": {\n let n = I(\"strides\", r, e, t10), s = I(\"pad\", r, e, t10), a = I(\"kernelSize\", r, e, t10);\n return [o.maxPool(I(\"x\", r, e, t10), [a[1], a[2]], [n[1], n[2]], s)];\n }\n case \"MaxPoolWithArgmax\": {\n let n = I(\"strides\", r, e, t10), s = I(\"pad\", r, e, t10), a = I(\"kernelSize\", r, e, t10), i = I(\"includeBatchInIndex\", r, e, t10), { result: p, indexes: u } = o.maxPoolWithArgmax(I(\"x\", r, e, t10), [a[1], a[2]], [n[1], n[2]], s, i);\n return [p, u];\n }\n case \"AvgPool3D\": {\n let n = I(\"strides\", r, e, t10), s = I(\"pad\", r, e, t10), a = I(\"kernelSize\", r, e, t10);\n return [o.avgPool3d(I(\"x\", r, e, t10), [a[1], a[2], a[3]], [n[1], n[2], n[3]], s)];\n }\n case \"MaxPool3D\": {\n let n = I(\"strides\", r, e, t10), s = I(\"pad\", r, e, t10), a = I(\"kernelSize\", r, e, t10);\n return [o.maxPool3d(I(\"x\", r, e, t10), [a[1], a[2], a[3]], [n[1], n[2], n[3]], s)];\n }\n case \"Dilation2D\": {\n let n = I(\"strides\", r, e, t10), s = I(\"pad\", r, e, t10), a = I(\"dilations\", r, e, t10), i = n[1], p = n[2], u = a[1], c = a[2];\n return [o.dilation2d(I(\"x\", r, e, t10), I(\"filter\", r, e, t10), [i, p], s, [u, c], \"NHWC\")];\n }\n default:\n throw TypeError(`Node type ${r.op} is not implemented`);\n }\n};\nvar GN = (r, e, t10, o = Ye) => {\n switch (r.op) {\n case \"Fill\": {\n let n = I(\"shape\", r, e, t10), s = I(\"dtype\", r, e, t10), a = I(\"value\", r, e, t10);\n return [o.fill(n, a, s)];\n }\n case \"LinSpace\": {\n let n = I(\"start\", r, e, t10), s = I(\"stop\", r, e, t10), a = I(\"num\", r, e, t10);\n return [o.linspace(n, s, a)];\n }\n case \"Multinomial\": {\n let n = I(\"logits\", r, e, t10), s = I(\"numSamples\", r, e, t10), a = I(\"seed\", r, e, t10);\n return [o.multinomial(n, s, a)];\n }\n case \"OneHot\": {\n let n = I(\"indices\", r, e, t10), s = I(\"depth\", r, e, t10), a = I(\"onValue\", r, e, t10), i = I(\"offValue\", r, e, t10), p = I(\"dtype\", r, e, t10);\n return [o.oneHot(n, s, a, i, p)];\n }\n case \"Ones\":\n return [o.ones(I(\"shape\", r, e, t10), I(\"dtype\", r, e, t10))];\n case \"OnesLike\":\n return [o.onesLike(I(\"x\", r, e, t10))];\n case \"RandomStandardNormal\":\n return [o.randomStandardNormal(I(\"shape\", r, e, t10), I(\"dtype\", r, e, t10), I(\"seed\", r, e, t10))];\n case \"RandomUniform\":\n return [o.randomUniform(I(\"shape\", r, e, t10), I(\"minval\", r, e, t10), I(\"maxval\", r, e, t10), I(\"dtype\", r, e, t10))];\n case \"Range\": {\n let n = I(\"start\", r, e, t10), s = I(\"stop\", r, e, t10), a = I(\"step\", r, e, t10);\n return [o.range(n, s, a, I(\"dtype\", r, e, t10))];\n }\n case \"TruncatedNormal\": {\n let n = I(\"shape\", r, e, t10), s = I(\"mean\", r, e, t10), a = I(\"stdDev\", r, e, t10), i = I(\"seed\", r, e, t10);\n return [o.truncatedNormal(n, s, a, I(\"dtype\", r, e, t10), i)];\n }\n case \"Zeros\":\n return [o.zeros(I(\"shape\", r, e, t10), I(\"dtype\", r, e, t10))];\n case \"ZerosLike\":\n return [o.zerosLike(I(\"x\", r, e, t10))];\n default:\n throw TypeError(`Node type ${r.op} is not implemented`);\n }\n};\nfunction rS(r, e, t10) {\n let o = I(\"boxes\", r, e, t10), n = I(\"scores\", r, e, t10), s = I(\"maxOutputSize\", r, e, t10), a = I(\"iouThreshold\", r, e, t10), i = I(\"scoreThreshold\", r, e, t10), p = I(\"softNmsSigma\", r, e, t10);\n return { boxes: o, scores: n, maxOutputSize: s, iouThreshold: a, scoreThreshold: i, softNmsSigma: p };\n}\nvar HN = async (r, e, t10, o, n = Ye) => {\n switch (r.op) {\n case \"NonMaxSuppressionV5\": {\n let { boxes: s, scores: a, maxOutputSize: i, iouThreshold: p, scoreThreshold: u, softNmsSigma: c } = rS(r, e, t10), l = await n.image.nonMaxSuppressionWithScoreAsync(s, a, i, p, u, c);\n return [l.selectedIndices, l.selectedScores];\n }\n case \"NonMaxSuppressionV4\": {\n let { boxes: s, scores: a, maxOutputSize: i, iouThreshold: p, scoreThreshold: u } = rS(r, e, t10), c = I(\"padToMaxOutputSize\", r, e, t10), l = await n.image.nonMaxSuppressionPaddedAsync(s, a, i, p, u, c);\n return [l.selectedIndices, l.validOutputs];\n }\n case \"NonMaxSuppressionV3\":\n case \"NonMaxSuppressionV2\": {\n let { boxes: s, scores: a, maxOutputSize: i, iouThreshold: p, scoreThreshold: u } = rS(r, e, t10);\n return [await n.image.nonMaxSuppressionAsync(s, a, i, p, u)];\n }\n case \"Where\": {\n let s = n.cast(I(\"condition\", r, e, t10), \"bool\"), a = [await n.whereAsync(s)];\n return s.dispose(), a;\n }\n case \"ListDiff\":\n return n.setdiff1dAsync(I(\"x\", r, e, t10), I(\"y\", r, e, t10));\n default:\n throw TypeError(`Node type ${r.op} is not implemented`);\n }\n};\nvar KN = (r, e, t10, o = Ye) => {\n switch (r.op) {\n case \"LowerBound\": {\n let n = I(\"sortedSequence\", r, e, t10), s = I(\"values\", r, e, t10);\n return [o.lowerBound(n, s)];\n }\n case \"TopKV2\": {\n let n = I(\"x\", r, e, t10), s = I(\"k\", r, e, t10), a = I(\"sorted\", r, e, t10), i = o.topk(n, s, a);\n return [i.values, i.indices];\n }\n case \"UpperBound\": {\n let n = I(\"sortedSequence\", r, e, t10), s = I(\"values\", r, e, t10);\n return [o.upperBound(n, s)];\n }\n case \"Unique\": {\n let n = I(\"x\", r, e, t10), s = o.unique(n);\n return [s.values, s.indices];\n }\n case \"UniqueV2\": {\n let n = I(\"x\", r, e, t10), s = I(\"axis\", r, e, t10), a = o.unique(n, s);\n return [a.values, a.indices];\n }\n default:\n throw TypeError(`Node type ${r.op} is not implemented`);\n }\n};\nvar qN = (r, e, t10, o = Ye) => {\n switch (r.op) {\n case \"Const\":\n return e[r.name];\n case \"PlaceholderWithDefault\":\n let n = I(\"default\", r, e, t10);\n return [Gt(r.name, e, t10) || n];\n case \"Placeholder\":\n return [Gt(r.name, e, t10)];\n case \"Identity\":\n case \"StopGradient\":\n case \"FakeQuantWithMinMaxVars\": {\n let c = I(\"x\", r, e, t10);\n return [is(c)];\n }\n case \"IdentityN\":\n return I(\"x\", r, e, t10).map((c) => is(c));\n case \"Snapshot\":\n let s = I(\"x\", r, e, t10);\n return [is(s)];\n case \"Shape\":\n return [o.tensor1d(I(\"x\", r, e, t10).shape, \"int32\")];\n case \"ShapeN\":\n return I(\"x\", r, e, t10).map((c) => o.tensor1d(c.shape));\n case \"Size\":\n return [o.scalar(I(\"x\", r, e, t10).size, \"int32\")];\n case \"Rank\":\n return [o.scalar(I(\"x\", r, e, t10).rank, \"int32\")];\n case \"NoOp\":\n return [o.scalar(1)];\n case \"Print\":\n let a = I(\"x\", r, e, t10), i = I(\"data\", r, e, t10), p = I(\"message\", r, e, t10), u = I(\"summarize\", r, e, t10);\n console.warn(\"The graph has a tf.print() operation,usually used for debugging, which slows down performance.\"), console.log(p);\n for (let c = 0; c < i.length; c++)\n console.log(Array.prototype.slice.call(i[c].dataSync()).slice(0, u));\n return [a];\n default:\n throw TypeError(`Node type ${r.op} is not implemented`);\n }\n};\nvar sf = class {\n constructor(e, t10) {\n this.keyDType = e, this.valueDType = t10, this.handle = Ce(0), this.tensorMap = /* @__PURE__ */ new Map(), _r(this.handle);\n }\n get id() {\n return this.handle.id;\n }\n clearAndClose() {\n this.tensorMap.forEach((e) => e.dispose()), this.tensorMap.clear(), this.handle.dispose();\n }\n size() {\n return this.tensorMap.size;\n }\n tensorSize() {\n return Ce(this.size(), \"int32\");\n }\n async import(e, t10) {\n this.checkKeyAndValueTensor(e, t10);\n let o = await e.data();\n return this.tensorMap.forEach((n) => n.dispose()), this.tensorMap.clear(), Ee(() => {\n let n = so(t10), s = o.length, a = n.length;\n y.assert(s === a, () => `The number of elements doesn't match, keys has ${s} elements, the values has ${a} elements.`);\n for (let i = 0; i < s; i++) {\n let p = o[i], u = n[i];\n _r(u), this.tensorMap.set(p, u);\n }\n return this.handle;\n });\n }\n async find(e, t10) {\n this.checkKeyAndValueTensor(e, t10);\n let o = await e.data();\n return Ee(() => {\n let n = [];\n for (let s = 0; s < o.length; s++) {\n let a = o[s], i = this.findWithDefault(a, t10);\n n.push(i);\n }\n return Sr(n);\n });\n }\n findWithDefault(e, t10) {\n let o = this.tensorMap.get(e);\n return o != null ? o : t10;\n }\n checkKeyAndValueTensor(e, t10) {\n if (e.dtype !== this.keyDType)\n throw new Error(`Expect key dtype ${this.keyDType}, but got ${e.dtype}`);\n if (t10.dtype !== this.valueDType)\n throw new Error(`Expect value dtype ${this.valueDType}, but got ${t10.dtype}`);\n }\n};\nvar jN = async (r, e, t10, o) => {\n switch (r.op) {\n case \"HashTable\":\n case \"HashTableV2\": {\n let n = o.getHashTableHandleByName(r.name);\n if (n != null)\n return [n];\n {\n let s = I(\"keyDType\", r, e, t10), a = I(\"valueDType\", r, e, t10), i = new sf(s, a);\n return o.addHashTable(r.name, i), [i.handle];\n }\n }\n case \"InitializeTable\":\n case \"InitializeTableV2\":\n case \"LookupTableImport\":\n case \"LookupTableImportV2\": {\n let n = I(\"tableHandle\", r, e, t10, o), s = I(\"keys\", r, e, t10), a = I(\"values\", r, e, t10);\n return [await o.getHashTableById(n.id).import(s, a)];\n }\n case \"LookupTableFind\":\n case \"LookupTableFindV2\": {\n let n = I(\"tableHandle\", r, e, t10, o), s = I(\"keys\", r, e, t10), a = I(\"defaultValue\", r, e, t10);\n return [await o.getHashTableById(n.id).find(s, a)];\n }\n case \"LookupTableSize\":\n case \"LookupTableSizeV2\": {\n let n = I(\"tableHandle\", r, e, t10, o);\n return [o.getHashTableById(n.id).tensorSize()];\n }\n default:\n throw TypeError(`Node type ${r.op} is not implemented`);\n }\n};\nvar XN = (r, e, t10, o = Ye) => {\n switch (r.op) {\n case \"ResizeBilinear\": {\n let n = I(\"images\", r, e, t10), s = I(\"size\", r, e, t10), a = I(\"alignCorners\", r, e, t10), i = I(\"halfPixelCenters\", r, e, t10);\n return [o.image.resizeBilinear(n, [s[0], s[1]], a, i)];\n }\n case \"ResizeNearestNeighbor\": {\n let n = I(\"images\", r, e, t10), s = I(\"size\", r, e, t10), a = I(\"alignCorners\", r, e, t10), i = I(\"halfPixelCenters\", r, e, t10);\n return [o.image.resizeNearestNeighbor(n, [s[0], s[1]], a, i)];\n }\n case \"CropAndResize\": {\n let n = I(\"image\", r, e, t10), s = I(\"boxes\", r, e, t10), a = I(\"boxInd\", r, e, t10), i = I(\"cropSize\", r, e, t10), p = I(\"method\", r, e, t10), u = I(\"extrapolationValue\", r, e, t10);\n return [o.image.cropAndResize(n, s, a, i, p, u)];\n }\n case \"ImageProjectiveTransformV3\": {\n let n = I(\"images\", r, e, t10), s = I(\"transforms\", r, e, t10), a = I(\"outputShape\", r, e, t10), i = I(\"fillValue\", r, e, t10), p = I(\"interpolation\", r, e, t10), u = I(\"fillMode\", r, e, t10);\n return [o.image.transform(n, s, p.toLowerCase(), u.toLowerCase(), i, a)];\n }\n default:\n throw TypeError(`Node type ${r.op} is not implemented`);\n }\n};\nvar YN = (r, e, t10, o = Ye) => {\n switch (r.op) {\n case \"Equal\":\n return [o.equal(I(\"a\", r, e, t10), I(\"b\", r, e, t10))];\n case \"NotEqual\":\n return [o.notEqual(I(\"a\", r, e, t10), I(\"b\", r, e, t10))];\n case \"Greater\":\n return [o.greater(I(\"a\", r, e, t10), I(\"b\", r, e, t10))];\n case \"GreaterEqual\":\n return [o.greaterEqual(I(\"a\", r, e, t10), I(\"b\", r, e, t10))];\n case \"Less\":\n return [o.less(I(\"a\", r, e, t10), I(\"b\", r, e, t10))];\n case \"LessEqual\":\n return [o.lessEqual(I(\"a\", r, e, t10), I(\"b\", r, e, t10))];\n case \"LogicalAnd\":\n return [o.logicalAnd(I(\"a\", r, e, t10), I(\"b\", r, e, t10))];\n case \"LogicalNot\":\n return [o.logicalNot(I(\"a\", r, e, t10))];\n case \"LogicalOr\":\n return [o.logicalOr(I(\"a\", r, e, t10), I(\"b\", r, e, t10))];\n case \"Select\":\n case \"SelectV2\":\n return [o.where(I(\"condition\", r, e, t10), I(\"a\", r, e, t10), I(\"b\", r, e, t10))];\n default:\n throw TypeError(`Node type ${r.op} is not implemented`);\n }\n};\nvar QN = (r, e, t10, o = Ye) => {\n switch (r.op) {\n case \"BatchMatMul\":\n case \"BatchMatMulV2\":\n case \"MatMul\":\n return [o.matMul(I(\"a\", r, e, t10), I(\"b\", r, e, t10), I(\"transposeA\", r, e, t10), I(\"transposeB\", r, e, t10))];\n case \"Einsum\":\n return [o.einsum(I(\"equation\", r, e, t10), ...I(\"tensors\", r, e, t10))];\n case \"Transpose\":\n return [o.transpose(I(\"x\", r, e, t10), I(\"perm\", r, e, t10))];\n case \"_FusedMatMul\":\n let [n, s] = I(\"fusedOps\", r, e, t10), a = n === \"biasadd\", i = s === \"prelu\", p = I(\"numArgs\", r, e, t10), u = I(\"leakyreluAlpha\", r, e, t10);\n if (a) {\n if (i && p !== 2)\n throw new Error(\"Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.\");\n if (!i && p !== 1)\n throw new Error(\"Fused MatMul with BiasAdd must have one extra argument: bias.\");\n }\n let [c, l] = I(\"args\", r, e, t10);\n return [o.fused.matMul({ a: I(\"a\", r, e, t10), b: I(\"b\", r, e, t10), transposeA: I(\"transposeA\", r, e, t10), transposeB: I(\"transposeB\", r, e, t10), bias: c, activation: s, preluActivationWeights: l, leakyreluAlpha: u })];\n default:\n throw TypeError(`Node type ${r.op} is not implemented`);\n }\n};\nvar ZN = (r, e, t10, o = Ye) => {\n switch (r.op) {\n case \"EuclideanNorm\":\n return [o.euclideanNorm(I(\"x\", r, e, t10), I(\"axis\", r, e, t10), I(\"keepDims\", r, e, t10))];\n case \"FusedBatchNorm\":\n case \"FusedBatchNormV2\":\n return [o.batchNorm(I(\"x\", r, e, t10), I(\"mean\", r, e, t10), I(\"variance\", r, e, t10), I(\"offset\", r, e, t10), I(\"scale\", r, e, t10), I(\"epsilon\", r, e, t10))];\n case \"FusedBatchNormV3\":\n return [o.batchNorm(I(\"x\", r, e, t10), I(\"mean\", r, e, t10), I(\"variance\", r, e, t10), I(\"offset\", r, e, t10), I(\"scale\", r, e, t10), I(\"epsilon\", r, e, t10))];\n case \"LRN\":\n return [o.localResponseNormalization(I(\"x\", r, e, t10), I(\"radius\", r, e, t10), I(\"bias\", r, e, t10), I(\"alpha\", r, e, t10), I(\"beta\", r, e, t10))];\n case \"Softmax\":\n return [o.softmax(I(\"x\", r, e, t10))];\n case \"LogSoftmax\":\n return [o.logSoftmax(I(\"x\", r, e, t10))];\n case \"SparseToDense\":\n return [o.sparseToDense(I(\"sparseIndices\", r, e, t10), I(\"outputShape\", r, e, t10), I(\"sparseValues\", r, e, t10), I(\"defaultValue\", r, e, t10))];\n default:\n throw TypeError(`Node type ${r.op} is not implemented`);\n }\n};\nvar JN = (r, e, t10, o = Ye) => {\n switch (r.op) {\n case \"RaggedGather\": {\n let { outputNestedSplits: n, outputDenseValues: s } = o.raggedGather(I(\"paramsNestedSplits\", r, e, t10), I(\"paramsDenseValues\", r, e, t10), I(\"indices\", r, e, t10), I(\"outputRaggedRank\", r, e, t10));\n return n.concat(s);\n }\n case \"RaggedRange\": {\n let { rtNestedSplits: n, rtDenseValues: s } = o.raggedRange(I(\"starts\", r, e, t10), I(\"limits\", r, e, t10), I(\"splits\", r, e, t10));\n return [n, s];\n }\n case \"RaggedTensorToTensor\":\n return [o.raggedTensorToTensor(I(\"shape\", r, e, t10), I(\"values\", r, e, t10), I(\"defaultValue\", r, e, t10), I(\"rowPartitionTensors\", r, e, t10), I(\"rowPartitionTypes\", r, e, t10))];\n default:\n throw TypeError(`Node type ${r.op} is not implemented`);\n }\n};\nvar eT = (r, e, t10, o = Ye) => {\n switch (r.op) {\n case \"Max\": {\n let i = I(\"axis\", r, e, t10), p = I(\"keepDims\", r, e, t10);\n return [o.max(I(\"x\", r, e, t10), i, p)];\n }\n case \"Mean\": {\n let i = I(\"axis\", r, e, t10), p = I(\"keepDims\", r, e, t10);\n return [o.mean(I(\"x\", r, e, t10), i, p)];\n }\n case \"Min\": {\n let i = I(\"axis\", r, e, t10), p = I(\"keepDims\", r, e, t10);\n return [o.min(I(\"x\", r, e, t10), i, p)];\n }\n case \"Sum\": {\n let i = I(\"axis\", r, e, t10), p = I(\"keepDims\", r, e, t10);\n return [o.sum(I(\"x\", r, e, t10), i, p)];\n }\n case \"All\": {\n let i = I(\"axis\", r, e, t10), p = I(\"keepDims\", r, e, t10);\n return [o.all(I(\"x\", r, e, t10), i, p)];\n }\n case \"Any\": {\n let i = I(\"axis\", r, e, t10), p = I(\"keepDims\", r, e, t10);\n return [o.any(I(\"x\", r, e, t10), i, p)];\n }\n case \"ArgMax\": {\n let i = I(\"axis\", r, e, t10);\n return [o.argMax(I(\"x\", r, e, t10), i)];\n }\n case \"ArgMin\": {\n let i = I(\"axis\", r, e, t10);\n return [o.argMin(I(\"x\", r, e, t10), i)];\n }\n case \"Prod\": {\n let i = I(\"axis\", r, e, t10), p = I(\"keepDims\", r, e, t10);\n return [o.prod(I(\"x\", r, e, t10), i, p)];\n }\n case \"Cumprod\": {\n let i = I(\"axis\", r, e, t10), p = I(\"exclusive\", r, e, t10), u = I(\"reverse\", r, e, t10);\n return [o.cumprod(I(\"x\", r, e, t10), i, p, u)];\n }\n case \"Cumsum\": {\n let i = I(\"axis\", r, e, t10), p = I(\"exclusive\", r, e, t10), u = I(\"reverse\", r, e, t10);\n return [o.cumsum(I(\"x\", r, e, t10), i, p, u)];\n }\n case \"Bincount\":\n let n = I(\"x\", r, e, t10), s = I(\"weights\", r, e, t10), a = I(\"size\", r, e, t10);\n return [o.bincount(n, s, a)];\n case \"DenseBincount\": {\n let i = I(\"x\", r, e, t10), p = I(\"weights\", r, e, t10), u = I(\"size\", r, e, t10), c = I(\"binaryOutput\", r, e, t10);\n return [o.denseBincount(i, p, u, c)];\n }\n default:\n throw TypeError(`Node type ${r.op} is not implemented`);\n }\n};\nvar tT = (r, e, t10, o = Ye) => {\n switch (r.op) {\n case \"ConcatV2\":\n case \"Concat\": {\n let n = I(\"n\", r, e, t10), s = I(\"axis\", r, e, t10), a = I(\"tensors\", r, e, t10);\n return a = a.slice(0, n), [o.concat(a, s)];\n }\n case \"Gather\": {\n let n = I(\"x\", r, e, t10), s = I(\"indices\", r, e, t10);\n return [o.gather(n, o.cast(s, \"int32\"), 0)];\n }\n case \"GatherV2\": {\n let n = I(\"axis\", r, e, t10), s = I(\"batchDims\", r, e, t10), a = I(\"x\", r, e, t10), i = I(\"indices\", r, e, t10);\n return [o.gather(a, o.cast(i, \"int32\"), n, s)];\n }\n case \"Reverse\": {\n let n = I(\"dims\", r, e, t10), s = [];\n for (let i = 0; i < n.length; i++)\n n[i] && s.push(i);\n let a = I(\"x\", r, e, t10);\n return [o.reverse(a, s)];\n }\n case \"ReverseV2\": {\n let n = I(\"axis\", r, e, t10), s = I(\"x\", r, e, t10);\n return [o.reverse(s, n)];\n }\n case \"Slice\": {\n let n = I(\"begin\", r, e, t10), s = I(\"size\", r, e, t10);\n return [o.slice(I(\"x\", r, e, t10), n, s)];\n }\n case \"StridedSlice\": {\n let n = I(\"begin\", r, e, t10), s = I(\"end\", r, e, t10), a = I(\"strides\", r, e, t10), i = I(\"beginMask\", r, e, t10), p = I(\"endMask\", r, e, t10), u = I(\"ellipsisMask\", r, e, t10), c = I(\"newAxisMask\", r, e, t10), l = I(\"shrinkAxisMask\", r, e, t10), m = I(\"x\", r, e, t10);\n return [o.stridedSlice(m, n, s, a, i, p, u, c, l)];\n }\n case \"Pack\":\n return Ee(() => {\n let n = I(\"axis\", r, e, t10), s = I(\"tensors\", r, e, t10), a = s[0].shape, i = o.squeeze(s[0]).shape, p = s.map((u) => {\n let c = y.arraysEqual(u.shape, a);\n if (!c && !y.arraysEqual(o.squeeze(u).shape, i))\n throw new Error(\"the input tensors shape does not match\");\n return c ? u : o.reshape(u, a);\n });\n return [o.stack(p, n)];\n });\n case \"Unpack\": {\n let n = I(\"axis\", r, e, t10), s = I(\"tensor\", r, e, t10);\n return o.unstack(s, n);\n }\n case \"Tile\": {\n let n = I(\"reps\", r, e, t10);\n return [o.tile(I(\"x\", r, e, t10), n)];\n }\n case \"Split\":\n case \"SplitV\": {\n let n = I(\"axis\", r, e, t10), s = I(\"numOrSizeSplits\", r, e, t10), a = I(\"x\", r, e, t10);\n return o.split(a, s, n);\n }\n case \"ScatterNd\": {\n let n = I(\"indices\", r, e, t10), s = I(\"values\", r, e, t10), a = I(\"shape\", r, e, t10);\n return [o.scatterND(n, s, a)];\n }\n case \"GatherNd\": {\n let n = I(\"x\", r, e, t10), s = I(\"indices\", r, e, t10);\n return [o.gatherND(n, s)];\n }\n case \"SparseToDense\": {\n let n = I(\"sparseIndices\", r, e, t10), s = I(\"outputShape\", r, e, t10), a = I(\"sparseValues\", r, e, t10), i = I(\"defaultValue\", r, e, t10);\n return [o.sparseToDense(n, a, s, a.dtype === i.dtype ? i : o.cast(i, a.dtype))];\n }\n default:\n throw TypeError(`Node type ${r.op} is not implemented`);\n }\n};\nvar rT = (r, e, t10, o = Ye) => {\n switch (r.op) {\n case \"SparseFillEmptyRows\": {\n let { outputIndices: n, outputValues: s, emptyRowIndicator: a, reverseIndexMap: i } = o.sparse.sparseFillEmptyRows(I(\"indices\", r, e, t10), I(\"values\", r, e, t10), I(\"denseShape\", r, e, t10), I(\"defaultValue\", r, e, t10));\n return [n, s, a, i];\n }\n case \"SparseReshape\": {\n let { outputIndices: n, outputShape: s } = o.sparse.sparseReshape(I(\"inputIndices\", r, e, t10), I(\"inputShape\", r, e, t10), I(\"newShape\", r, e, t10));\n return [n, s];\n }\n case \"SparseSegmentMean\":\n return [o.sparse.sparseSegmentMean(I(\"data\", r, e, t10), I(\"indices\", r, e, t10), I(\"segmentIds\", r, e, t10))];\n case \"SparseSegmentSum\":\n return [o.sparse.sparseSegmentSum(I(\"data\", r, e, t10), I(\"indices\", r, e, t10), I(\"segmentIds\", r, e, t10))];\n default:\n throw TypeError(`Node type ${r.op} is not implemented`);\n }\n};\nvar oT = (r, e, t10, o = Ye) => {\n switch (r.op) {\n case \"FFT\":\n return [o.fft(I(\"x\", r, e, t10))];\n case \"IFFT\":\n return [o.ifft(I(\"x\", r, e, t10))];\n case \"RFFT\":\n return [o.rfft(I(\"x\", r, e, t10))];\n case \"IRFFT\":\n return [o.irfft(I(\"x\", r, e, t10))];\n default:\n throw TypeError(`Node type ${r.op} is not implemented`);\n }\n};\nvar nT = (r, e, t10, o = Ye) => {\n switch (r.op) {\n case \"StringNGrams\": {\n let { nGrams: n, nGramsSplits: s } = o.string.stringNGrams(I(\"data\", r, e, t10), I(\"dataSplits\", r, e, t10), I(\"separator\", r, e, t10), I(\"nGramWidths\", r, e, t10), I(\"leftPad\", r, e, t10), I(\"rightPad\", r, e, t10), I(\"padWidth\", r, e, t10), I(\"preserveShortSequences\", r, e, t10));\n return [n, s];\n }\n case \"StringSplit\": {\n let { indices: n, values: s, shape: a } = o.string.stringSplit(I(\"input\", r, e, t10), I(\"delimiter\", r, e, t10), I(\"skipEmpty\", r, e, t10));\n return [n, s, a];\n }\n case \"StringToHashBucketFast\":\n return [o.string.stringToHashBucketFast(I(\"input\", r, e, t10), I(\"numBuckets\", r, e, t10))];\n default:\n throw TypeError(`Node type ${r.op} is not implemented`);\n }\n};\nvar sT = (r, e, t10, o = Ye) => {\n switch (r.op) {\n case \"Cast\":\n return [o.cast(I(\"x\", r, e, t10), I(\"dtype\", r, e, t10))];\n case \"ExpandDims\": {\n let n = I(\"axis\", r, e, t10);\n return [o.expandDims(I(\"x\", r, e, t10), n)];\n }\n case \"Squeeze\": {\n let n = I(\"axis\", r, e, t10);\n return [o.squeeze(I(\"x\", r, e, t10), n)];\n }\n case \"Reshape\":\n return [o.reshape(I(\"x\", r, e, t10), I(\"shape\", r, e, t10))];\n case \"MirrorPad\":\n return [o.mirrorPad(I(\"x\", r, e, t10), I(\"padding\", r, e, t10), I(\"mode\", r, e, t10))];\n case \"PadV2\":\n case \"Pad\":\n return [o.pad(I(\"x\", r, e, t10), I(\"padding\", r, e, t10), I(\"constantValue\", r, e, t10))];\n case \"SpaceToBatchND\": {\n let n = I(\"blockShape\", r, e, t10), s = I(\"paddings\", r, e, t10);\n return [o.spaceToBatchND(I(\"x\", r, e, t10), n, s)];\n }\n case \"BatchToSpaceND\": {\n let n = I(\"blockShape\", r, e, t10), s = I(\"crops\", r, e, t10);\n return [o.batchToSpaceND(I(\"x\", r, e, t10), n, s)];\n }\n case \"DepthToSpace\": {\n let n = I(\"blockSize\", r, e, t10), s = I(\"dataFormat\", r, e, t10).toUpperCase();\n return [o.depthToSpace(I(\"x\", r, e, t10), n, s)];\n }\n case \"BroadcastTo\":\n return [o.broadcastTo(I(\"x\", r, e, t10), I(\"shape\", r, e, t10))];\n case \"BroadcastArgs\":\n return [o.broadcastArgs(I(\"s0\", r, e, t10), I(\"s1\", r, e, t10))];\n default:\n throw TypeError(`Node type ${r.op} is not implemented`);\n }\n};\nfunction oS(r, e, t10, o, n = Ee) {\n let s = ((a, i, p) => {\n switch (a.category) {\n case \"arithmetic\":\n return n(() => FN(a, i, p));\n case \"basic_math\":\n return n(() => ON(a, i, p));\n case \"control\":\n return zN(a, i, p);\n case \"convolution\":\n return n(() => UN(a, i, p));\n case \"creation\":\n return n(() => GN(a, i, p));\n case \"dynamic\":\n return HN(a, i, p);\n case \"evaluation\":\n return n(() => KN(a, i, p));\n case \"image\":\n return n(() => XN(a, i, p));\n case \"graph\":\n return n(() => qN(a, i, p));\n case \"logical\":\n return n(() => YN(a, i, p));\n case \"matrices\":\n return n(() => QN(a, i, p));\n case \"normalization\":\n return n(() => ZN(a, i, p));\n case \"ragged\":\n return n(() => JN(a, i, p));\n case \"reduction\":\n return n(() => eT(a, i, p));\n case \"slice_join\":\n return n(() => tT(a, i, p));\n case \"sparse\":\n return n(() => rT(a, i, p));\n case \"spectral\":\n return n(() => oT(a, i, p));\n case \"string\":\n return n(() => nT(a, i, p));\n case \"transformation\":\n return n(() => sT(a, i, p));\n case \"hash_table\":\n return jN(a, i, p, o);\n case \"custom\":\n let u = Gd(a.op);\n if (u && u.customExecutor)\n return u.customExecutor(new rf(a, i, p));\n throw TypeError(`Custom op ${a.op} is not registered.`);\n default:\n throw TypeError(`Unknown op '${a.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`);\n }\n })(r, e, t10);\n return y.isPromise(s) ? s.then((a) => [].concat(a)) : [].concat(s);\n}\nvar dl = class {\n constructor(e = {}, t10 = {}, o = {}, n = {}) {\n this.weightMap = e, this.tensorArrayMap = t10, this.tensorListMap = o, this.functionMap = n, this.rootContext = { id: 0, frameName: \"\", iterationId: 0 }, this.contexts = [this.rootContext], this.lastId = 0, this.generateCurrentContextIds();\n }\n newFrame(e, t10) {\n return { id: e, frameName: t10, iterationId: 0 };\n }\n set currentContext(e) {\n this.contexts !== e && (this.contexts = e, this.generateCurrentContextIds());\n }\n get currentContext() {\n return this.contexts;\n }\n get currentContextId() {\n return this._currentContextIds[0];\n }\n get currentContextIds() {\n return this._currentContextIds;\n }\n generateCurrentContextIds() {\n let e = [];\n for (let t10 = 0; t10 < this.contexts.length - 1; t10++) {\n let o = this.contexts.slice(0, this.contexts.length - t10);\n e.push(this.contextIdforContexts(o));\n }\n e.push(\"\"), this._currentContextIds = e;\n }\n contextIdforContexts(e) {\n return e ? e.map((t10) => t10.id === 0 && t10.iterationId === 0 ? \"\" : `${t10.frameName}-${t10.iterationId}`).join(\"/\") : \"\";\n }\n enterFrame(e) {\n this.contexts && (this.lastId++, this.contexts = this.contexts.slice(), this.contexts.push(this.newFrame(this.lastId, e)), this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)));\n }\n exitFrame() {\n if (this.contexts && this.contexts.length > 1)\n this.contexts = this.contexts.slice(), this.contexts.splice(-1), this.currentContextIds.shift();\n else\n throw new Error(\"Cannot exit frame, the context is empty\");\n }\n nextIteration() {\n if (this.contexts && this.contexts.length > 0) {\n this.contexts = this.contexts.slice(), this.lastId++;\n let e = Object.assign({}, this.contexts[this.contexts.length - 1]);\n e.iterationId += 1, e.id = this.lastId, this.contexts.splice(-1, 1, e), this._currentContextIds.splice(0, 1, this.contextIdforContexts(this.contexts));\n } else\n throw new Error(\"Cannot increase frame iteration, the context is empty\");\n }\n getWeight(e) {\n return this.weightMap[e];\n }\n addTensorArray(e) {\n this.tensorArrayMap[e.id] = e;\n }\n getTensorArray(e) {\n return this.tensorArrayMap[e];\n }\n addTensorList(e) {\n this.tensorListMap[e.id] = e;\n }\n getTensorList(e) {\n return this.tensorListMap[e];\n }\n dispose(e) {\n for (let t10 in this.tensorArrayMap)\n this.tensorArrayMap[t10].clearAndClose(e);\n for (let t10 in this.tensorListMap)\n this.tensorListMap[t10].clearAndClose(e);\n }\n};\nfunction nS(r, e, t10, o) {\n let n = /* @__PURE__ */ new Set(), s = [], a = null, i = null, p = /* @__PURE__ */ new Set(), u = Object.keys(r).map((m) => Ir(m)[0]), c = [];\n o != null && (c = o.map((m) => Ir(m.name)[0]));\n let l = [...e];\n for (; l.length > 0; ) {\n let m = l.pop();\n if ((sS(m) || T6(m) || _6(m)) && a == null && (a = m, i = a.children.map((d) => d.name).filter((d) => n.has(d))), n.add(m.name), t10[m.name] == null && u.indexOf(m.name) === -1 && c.indexOf(m.name) === -1) {\n if (m.inputs.length === 0) {\n s.push(m.name);\n continue;\n }\n m.inputs.forEach((d) => {\n p.has(d.name) || (p.add(d.name), l.push(d));\n });\n }\n }\n return { inputs: r, outputs: e, usedNodes: n, missingInputs: s, dynamicNode: a, syncInputs: i };\n}\nfunction aT(r, e, t10) {\n let { usedNodes: o, inputs: n } = t10, s = [], a = Object.keys(n).map((c) => Ir(c)[0]).map((c) => r.nodes[c]), i = r.initNodes;\n a.forEach((c) => {\n o.has(c.name) && s.push(c);\n }), r.weights.forEach((c) => {\n o.has(c.name) && s.push(c);\n }), i != null && i.forEach((c) => {\n o.has(c.name) && s.push(c);\n });\n let p = /* @__PURE__ */ new Set(), u = [];\n for (; s.length > 0; ) {\n let c = s.pop();\n p.add(c.name), e[c.name] || u.push(c), c.children.forEach((l) => {\n !p.has(l.name) && o.has(l.name) && l.inputs.every((m) => p.has(m.name)) && s.push(l);\n });\n }\n return u;\n}\nvar v6 = [\"Switch\", \"Merge\", \"Enter\", \"Exit\", \"NextIteration\", \"StatelessIf\", \"StatelessWhile\", \"if\", \"While\"];\nvar k6 = [\"NonMaxSuppressionV2\", \"NonMaxSuppressionV3\", \"NonMaxSuppressionV5\", \"Where\"];\nvar N6 = [\"HashTable\", \"HashTableV2\", \"LookupTableImport\", \"LookupTableImportV2\", \"LookupTableFind\", \"LookupTableFindV2\", \"LookupTableSize\", \"LookupTableSizeV2\"];\nfunction sS(r) {\n return v6.indexOf(r.op) >= 0;\n}\nfunction T6(r) {\n return k6.indexOf(r.op) >= 0;\n}\nfunction _6(r) {\n return N6.indexOf(r.op) >= 0;\n}\nvar ku = class {\n constructor(e, t10) {\n this.graph = e, this.parent = t10, this.compiledMap = /* @__PURE__ */ new Map(), this._weightMap = {}, this.SEPERATOR = \",\", this._functions = {}, this._functionExecutorMap = {}, this.keepIntermediateTensors = false, this._outputs = e.outputs, this._inputs = e.inputs, this._initNodes = e.initNodes, this._signature = e.signature, this._functions = e.functions, e.functions != null && Object.keys(e.functions).forEach((o) => {\n this._functionExecutorMap[o] = new ku(e.functions[o], this);\n });\n }\n get weightIds() {\n return this.parent ? this.parent.weightIds : this._weightIds;\n }\n get functionExecutorMap() {\n return this.parent ? this.parent.functionExecutorMap : this._functionExecutorMap;\n }\n get weightMap() {\n return this.parent ? this.parent.weightMap : this._weightMap;\n }\n set weightMap(e) {\n let t10 = Object.keys(e).map((o) => e[o].map((n) => n.id));\n this._weightIds = [].concat(...t10), this._weightMap = e;\n }\n set resourceManager(e) {\n this._resourceManager = e;\n }\n get inputs() {\n return this._inputs.map((e) => ({ name: e.name, shape: e.attrParams.shape ? e.attrParams.shape.value : void 0, dtype: e.attrParams.dtype ? e.attrParams.dtype.value : void 0 }));\n }\n get outputs() {\n return this._outputs.map((e) => ({ name: e.name, shape: e.attrParams.shape ? e.attrParams.shape.value : void 0, dtype: e.attrParams.dtype ? e.attrParams.dtype.value : void 0 }));\n }\n get inputNodes() {\n return this._inputs.map((e) => e.signatureKey || e.name);\n }\n get outputNodes() {\n return this._outputs.map((e) => {\n let t10 = e.signatureKey || e.name;\n return e.defaultOutput ? `${t10}:${e.defaultOutput}` : t10;\n });\n }\n get functions() {\n return Object.keys(this._functions).reduce((e, t10) => (e[t10] = this._functions[t10].signature, e), {});\n }\n getCompilationKey(e, t10) {\n let o = e.map((s) => s.name).sort(), n = t10.map((s) => s.name).sort();\n return o.join(this.SEPERATOR) + \"--\" + n.join(this.SEPERATOR);\n }\n compile(e, t10) {\n let o = nS(e, t10, this.weightMap, this._initNodes), { missingInputs: n, dynamicNode: s, syncInputs: a } = o;\n if (s != null)\n throw new Error(`This execution contains the node '${s.name}', which has the dynamic op '${s.op}'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [${a}]`);\n if (n.length > 0) {\n let i = t10.map((u) => u.name), p = Object.keys(e);\n throw new Error(`Cannot compute the outputs [${i}] from the provided inputs [${p}]. Missing the following inputs: [${n}]`);\n }\n return aT(this.graph, this.weightMap, o);\n }\n cloneAndKeepTensor(e) {\n if (e == null)\n return null;\n let t10 = e.clone();\n return _r(t10), t10;\n }\n cloneTensorList(e) {\n return e ? e.map((o) => this.cloneAndKeepTensor(o)) : null;\n }\n cloneTensorMap(e) {\n return Object.fromEntries(Object.entries(e).map(([t10, o]) => [t10, this.cloneTensorList(o)]));\n }\n execute(e, t10) {\n this.disposeIntermediateTensors(), e = this.mapInputs(e);\n let o = Object.keys(e).sort();\n this.checkInputs(e), this.checkInputShapeAndType(e), t10 = this.mapOutputs(t10), this.checkOutputs(t10);\n let n = o.map((l) => this.graph.nodes[Ir(l)[0]]), s = t10.map((l) => Ir(l)[0]), a = s.map((l) => this.graph.nodes[l]);\n a.length === 0 && (a = this._outputs);\n let i = this.getCompilationKey(n, a), p = this.compiledMap.get(i);\n p == null && (p = this.compile(e, a), this.compiledMap.set(i, p));\n try {\n this.keepIntermediateTensors = O().getBool(\"KEEP_INTERMEDIATE_TENSORS\");\n } catch (l) {\n this.keepIntermediateTensors = false, console.warn(l.message);\n }\n let u = {}, c = {};\n return Ee(() => {\n let l = new dl(this.weightMap, u, c, this.functionExecutorMap), m = Object.assign({}, this.weightMap);\n this.keepIntermediateTensors && (this.clonedTensorsMap = this.cloneTensorMap(this.weightMap)), Object.keys(e).forEach((h) => {\n let [g, x] = Ir(h), b = [];\n b[x] = e[h], m[g] = b, this.keepIntermediateTensors && (this.clonedTensorsMap[g] = this.cloneTensorList(b));\n });\n let d = this.getFrozenTensorIds(m), f = {};\n for (let h = 0; h < p.length; h++) {\n let g = p[h];\n if (!m[g.name]) {\n let x = oS(g, m, l, this._resourceManager);\n if (y.isPromise(x))\n throw new Error(`The execution of the op '${g.op}' returned a promise. Please use model.executeAsync() instead.`);\n m[g.name] = x, this.keepIntermediateTensors && (this.clonedTensorsMap[g.name] = this.cloneTensorList(x)), this.checkTensorForDisposal(g.name, g, m, l, d, s, f);\n }\n }\n return this.parent == null && l.dispose(d), t10.map((h) => Gt(h, m, l));\n });\n }\n getFrozenTensorIds(e) {\n let t10 = [].concat.apply([], Object.keys(e).map((o) => e[o]).map((o) => o.map((n) => n.id)));\n return new Set(t10);\n }\n checkTensorForDisposal(e, t10, o, n, s, a, i) {\n t10.category === \"control\" || a.indexOf(e) !== -1 || (o[e].forEach((p) => {\n p != null && (i[p.id] = (i[p.id] || 0) + t10.children.length);\n }), t10.inputs.forEach((p) => {\n if (p.category !== \"control\") {\n let u = EN(p.name, o, n);\n u != null && u.forEach((c) => {\n if (c && !c.kept && !s.has(c.id)) {\n let l = i[c.id];\n l === 1 ? (c.dispose(), delete i[c.id]) : l != null && i[c.id]--;\n }\n });\n }\n }));\n }\n async executeAsync(e, t10) {\n return this._executeAsync(e, t10);\n }\n disposeIntermediateTensors() {\n this.clonedTensorsMap && (Object.values(this.clonedTensorsMap).forEach((e) => {\n for (let t10 of e)\n t10 && !t10.isDisposed && t10.dispose();\n }), this.clonedTensorsMap = null);\n }\n getIntermediateTensors() {\n return this.clonedTensorsMap;\n }\n async _executeAsync(e, t10, o = false, n = {}, s = {}) {\n this.disposeIntermediateTensors(), o || (e = this.mapInputs(e), this.checkInputs(e), this.checkInputShapeAndType(e), t10 = this.mapOutputs(t10), this.checkOutputs(t10));\n try {\n this.keepIntermediateTensors = O().getBool(\"KEEP_INTERMEDIATE_TENSORS\");\n } catch (m) {\n this.keepIntermediateTensors = false, console.warn(m.message);\n }\n let a = new dl(this.weightMap, n, s, this.functionExecutorMap);\n this.keepIntermediateTensors && (this.clonedTensorsMap = this.cloneTensorMap(this.weightMap));\n let i = await this.executeWithControlFlow(e, a, t10, o), p = t10.map((m) => Gt(m, i, a)), u = p.map((m) => m.id), c = Object.keys(e).map((m) => e[m].id), l = /* @__PURE__ */ new Set([...u, ...c, ...this.weightIds]);\n return Object.values(i).forEach((m) => {\n m.forEach((d) => {\n d && !d.isDisposed && !l.has(d.id) && d.dispose();\n });\n }), this.parent == null && a.dispose(l), p;\n }\n async executeFunctionAsync(e, t10, o) {\n let n = e.reduce((s, a, i) => (s[this.inputs[i].name] = a, s), {});\n return this._executeAsync(n, this.outputNodes, true, t10, o);\n }\n async executeWithControlFlow(e, t10, o, n) {\n let s = Object.keys(e), a = s.map((C) => this.graph.nodes[Ir(C)[0]]), i = o.map((C) => Ir(C)[0]), p = i.map((C) => this.graph.nodes[C]);\n p.length === 0 && (p = this._outputs);\n let { usedNodes: u, missingInputs: c, dynamicNode: l, syncInputs: m } = nS(e, p, this.weightMap, this._initNodes), d = [...a, ...this.graph.weights, ...this._initNodes || []].map((C) => ({ node: C, contexts: t10.currentContext })), f = Object.assign({}, this.weightMap);\n Object.keys(e).forEach((C) => {\n let [w, k] = Ir(C), _ = [];\n _[k] = e[C], f[w] = _;\n });\n let h = {}, g = this.getFrozenTensorIds(f), x = {};\n for (; d.length > 0; ) {\n let C = this.processStack(a, d, t10, f, x, g, i, h, u);\n await Promise.all(C);\n }\n l == null && !n && console.warn(\"This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.\");\n let b = p.filter((C) => !sS(C) && !Gt(C.name, f, t10)).map((C) => C.name);\n if (b.length > 0) {\n let C = \"\";\n throw l != null && (C = `Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${m}]`), new Error(`Cannot compute the outputs [${b}] from the provided inputs [${s}]. Consider providing the following inputs: [${c}]. ${C}`);\n }\n return f;\n }\n processStack(e, t10, o, n, s, a, i, p, u) {\n let c = [];\n for (; t10.length > 0; ) {\n let l = t10.pop();\n o.currentContext = l.contexts;\n let m = \"\";\n if (l.node.op === \"Enter\" && I(\"isConstant\", l.node, n, o) && ([m] = as(l.node.name, o)), n[l.node.name] == null) {\n let d = oS(l.node, n, o, this._resourceManager);\n m || ([m] = as(l.node.name, o));\n let f = o.currentContext;\n y.isPromise(d) ? c.push(d.then((h) => (n[m] = h, this.keepIntermediateTensors && (this.clonedTensorsMap[m] = this.cloneTensorList(h)), o.currentContext = f, this.checkTensorForDisposal(m, l.node, n, o, a, i, p), this.processChildNodes(l.node, t10, o, n, s, u), h))) : (n[m] = d, this.keepIntermediateTensors && (this.clonedTensorsMap[m] = this.cloneTensorList(d)), this.checkTensorForDisposal(m, l.node, n, o, a, i, p), this.processChildNodes(l.node, t10, o, n, s, u));\n } else\n this.processChildNodes(l.node, t10, o, n, s, u);\n }\n return c;\n }\n processChildNodes(e, t10, o, n, s, a) {\n e.children.forEach((i) => {\n let [p] = as(i.name, o);\n s[p] || !a.has(i.name) || (i.op === \"Merge\" ? i.inputNames.some((u) => !!Gt(u, n, o)) && (s[p] = true, t10.push({ contexts: o.currentContext, node: i })) : i.inputNames.every((u) => !!Gt(u, n, o)) && (s[p] = true, t10.push({ contexts: o.currentContext, node: i })));\n });\n }\n dispose() {\n Object.keys(this.weightMap).forEach((e) => this.weightMap[e].forEach((t10) => t10.dispose()));\n }\n checkInputShapeAndType(e) {\n Object.keys(e).forEach((t10) => {\n let o = e[t10], [n] = Ir(t10), s = this.graph.nodes[n];\n if (s.attrParams.shape && s.attrParams.shape.value) {\n let a = s.attrParams.shape.value, i = a.length === o.shape.length && o.shape.every((p, u) => a[u] === -1 || a[u] === p);\n y.assert(i, () => `The shape of dict['${s.name}'] provided in model.execute(dict) must be [${a}], but was [${o.shape}]`);\n }\n s.attrParams.dtype && s.attrParams.dtype.value && y.assert(o.dtype === s.attrParams.dtype.value, () => `The dtype of dict['${s.name}'] provided in model.execute(dict) must be ${s.attrParams.dtype.value}, but was ${o.dtype}`);\n });\n }\n mapInputs(e) {\n var t10, o;\n let n = {};\n for (let s in e) {\n let a = (o = (t10 = this._signature) === null || t10 === void 0 ? void 0 : t10.inputs) === null || o === void 0 ? void 0 : o[s];\n a != null ? n[a.name] = e[s] : n[s] = e[s];\n }\n return n;\n }\n checkInputs(e) {\n let t10 = Object.keys(e).filter((o) => {\n let [n] = Ir(o);\n return this.graph.nodes[n] == null;\n });\n if (t10.length > 0)\n throw new Error(`The dict provided in model.execute(dict) has keys: [${t10}] that are not part of graph`);\n }\n mapOutputs(e) {\n return e.map((t10) => {\n var o, n;\n let s = (n = (o = this._signature) === null || o === void 0 ? void 0 : o.outputs) === null || n === void 0 ? void 0 : n[t10];\n return s != null ? s.name : t10;\n }, {});\n }\n checkOutputs(e) {\n e.forEach((t10) => {\n let [o] = Ir(t10);\n if (!this.graph.nodes[o])\n throw new Error(`The output '${t10}' is not found in the graph`);\n });\n }\n};\nvar af = class {\n constructor(e = {}, t10 = {}) {\n this.hashTableNameToHandle = e, this.hashTableMap = t10;\n }\n addHashTable(e, t10) {\n this.hashTableNameToHandle[e] = t10.handle, this.hashTableMap[t10.id] = t10;\n }\n getHashTableHandleByName(e) {\n return this.hashTableNameToHandle[e];\n }\n getHashTableById(e) {\n return this.hashTableMap[e];\n }\n dispose() {\n for (let e in this.hashTableMap)\n this.hashTableMap[e].clearAndClose(), delete this.hashTableMap[e];\n for (let e in this.hashTableNameToHandle)\n this.hashTableNameToHandle[e].dispose(), delete this.hashTableNameToHandle[e];\n }\n};\nvar $6 = \"?tfjs-format=file\";\nvar E6 = \"model.json\";\nvar fl = class {\n constructor(e, t10 = {}, o = La) {\n this.modelUrl = e, this.loadOptions = t10, this.version = \"n/a\", this.io = o, t10 == null && (this.loadOptions = {}), this.resourceManager = new af();\n }\n get modelVersion() {\n return this.version;\n }\n get inputNodes() {\n return this.executor.inputNodes;\n }\n get outputNodes() {\n return this.executor.outputNodes;\n }\n get inputs() {\n return this.executor.inputs;\n }\n get outputs() {\n return this.executor.outputs;\n }\n get weights() {\n return this.executor.weightMap;\n }\n get metadata() {\n return this.artifacts.userDefinedMetadata;\n }\n get modelSignature() {\n return this.signature;\n }\n get modelStructuredOutputKeys() {\n return this.structuredOutputKeys;\n }\n findIOHandler() {\n let e = this.modelUrl;\n if (e.load != null)\n this.handler = e;\n else if (this.loadOptions.requestInit != null)\n this.handler = this.io.browserHTTPRequest(e, this.loadOptions);\n else {\n let t10 = this.io.getLoadHandlers(e, this.loadOptions);\n if (t10.length === 0)\n t10.push(this.io.browserHTTPRequest(e, this.loadOptions));\n else if (t10.length > 1)\n throw new Error(`Found more than one (${t10.length}) load handlers for URL '${[e]}'`);\n this.handler = t10[0];\n }\n }\n load() {\n if (this.findIOHandler(), this.handler.load == null)\n throw new Error(\"Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.\");\n let e = this.handler.load();\n return y.isPromise(e) ? e.then((t10) => this.loadSync(t10)) : this.loadSync(e);\n }\n loadSync(e) {\n this.artifacts = e;\n let t10 = this.artifacts.modelTopology, o = this.artifacts.signature;\n if (this.artifacts.userDefinedMetadata != null) {\n let s = this.artifacts.userDefinedMetadata;\n s.signature != null && (o = s.signature), s.structuredOutputKeys != null && (this.structuredOutputKeys = s.structuredOutputKeys);\n }\n this.signature = o, this.version = `${t10.versions.producer}.${t10.versions.minConsumer}`;\n let n = this.io.decodeWeights(this.artifacts.weightData, this.artifacts.weightSpecs);\n if (this.executor = new ku(ml.Instance.transformGraph(t10, this.signature)), this.executor.weightMap = this.convertTensorMapToTensorsMap(n), this.executor.resourceManager = this.resourceManager, e.modelInitializer != null && e.modelInitializer.node != null) {\n let s = ml.Instance.transformGraph(e.modelInitializer);\n this.initializer = new ku(s), this.initializer.weightMap = this.executor.weightMap, this.initializer.resourceManager = this.resourceManager, this.initializerSignature = e.initializerSignature;\n }\n return true;\n }\n async save(e, t10) {\n if (typeof e == \"string\") {\n let o = this.io.getSaveHandlers(e);\n if (o.length === 0)\n throw new Error(`Cannot find any save handlers for URL '${e}'`);\n if (o.length > 1)\n throw new Error(`Found more than one (${o.length}) save handlers for URL '${e}'`);\n e = o[0];\n }\n if (e.save == null)\n throw new Error(\"GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.\");\n return e.save(this.artifacts);\n }\n addStructuredOutputNames(e) {\n if (this.structuredOutputKeys) {\n let t10 = e instanceof it ? [e] : e, o = {};\n return t10.forEach((n, s) => o[this.structuredOutputKeys[s]] = n), o;\n }\n return e;\n }\n predict(e, t10) {\n let o = this.execute(e, this.outputNodes);\n return this.addStructuredOutputNames(o);\n }\n async predictAsync(e, t10) {\n let o = await this.executeAsync(e, this.outputNodes);\n return this.addStructuredOutputNames(o);\n }\n normalizeInputs(e) {\n var t10;\n if (!(e instanceof it) && !Array.isArray(e)) {\n let s = (t10 = this.signature) === null || t10 === void 0 ? void 0 : t10.inputs;\n if (s != null)\n for (let a in s) {\n let i = s[a];\n i.resourceId != null && (e[a] = this.resourceIdToCapturedInput[i.resourceId]);\n }\n return e;\n }\n e = Array.isArray(e) ? e : [e];\n let o = Object.keys(this.resourceIdToCapturedInput).length;\n if (e.length + o !== this.inputNodes.length)\n throw new Error(`Input tensor count mismatch, the graph model has ${this.inputNodes.length - o} non-resource placeholders, while there are ${e.length} input tensors provided.`);\n let n = 0;\n return this.inputNodes.reduce((s, a) => {\n var i, p, u;\n let c = (u = (p = (i = this.signature) === null || i === void 0 ? void 0 : i.inputs) === null || p === void 0 ? void 0 : p[a]) === null || u === void 0 ? void 0 : u.resourceId;\n return c != null ? s[a] = this.resourceIdToCapturedInput[c] : s[a] = e[n++], s;\n }, {});\n }\n normalizeOutputs(e) {\n return e = e || this.outputNodes, Array.isArray(e) ? e : [e];\n }\n executeInitializerGraph() {\n return this.initializer == null ? [] : this.initializerSignature == null ? this.initializer.execute({}, []) : this.initializer.execute({}, Object.keys(this.initializerSignature.outputs));\n }\n async executeInitializerGraphAsync() {\n return this.initializer == null ? [] : this.initializerSignature == null ? this.initializer.executeAsync({}, []) : this.initializer.executeAsync({}, Object.keys(this.initializerSignature.outputs));\n }\n setResourceIdToCapturedInput(e) {\n if (this.resourceIdToCapturedInput = {}, this.initializerSignature) {\n let t10 = this.initializerSignature.outputs, o = Object.keys(t10);\n for (let n = 0; n < o.length; n++) {\n let s = o[n], a = t10[s];\n this.resourceIdToCapturedInput[a.resourceId] = e[n];\n }\n }\n }\n execute(e, t10) {\n this.resourceIdToCapturedInput == null && this.setResourceIdToCapturedInput(this.executeInitializerGraph()), e = this.normalizeInputs(e), t10 = this.normalizeOutputs(t10);\n let o = this.executor.execute(e, t10);\n return o.length > 1 ? o : o[0];\n }\n async executeAsync(e, t10) {\n this.resourceIdToCapturedInput == null && this.setResourceIdToCapturedInput(await this.executeInitializerGraphAsync()), e = this.normalizeInputs(e), t10 = this.normalizeOutputs(t10);\n let o = await this.executor.executeAsync(e, t10);\n return o.length > 1 ? o : o[0];\n }\n getIntermediateTensors() {\n return this.executor.getIntermediateTensors();\n }\n disposeIntermediateTensors() {\n this.executor.disposeIntermediateTensors();\n }\n convertTensorMapToTensorsMap(e) {\n return Object.keys(e).reduce((t10, o) => (t10[o] = [e[o]], t10), {});\n }\n dispose() {\n this.executor.dispose(), this.initializer && (this.initializer.dispose(), this.resourceIdToCapturedInput && Ot(this.resourceIdToCapturedInput)), this.resourceManager.dispose();\n }\n};\nasync function A6(r, e = {}, t10 = La) {\n if (r == null)\n throw new Error(\"modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model\");\n e == null && (e = {}), e.fromTFHub && typeof r == \"string\" && (r = D6(r));\n let o = new fl(r, e, t10);\n return await o.load(), o;\n}\nfunction R6(r) {\n if (r == null)\n throw new Error(\"modelUrl in loadGraphModelSync() cannot be null. Please provide model artifacts or an IOHandler that loads the model\");\n let e;\n if (r instanceof Array) {\n let [o, n] = r;\n if (!o)\n throw new Error(\"modelJSON must be the first element of the array\");\n if (!n || !(n instanceof ArrayBuffer))\n throw new Error(\"An ArrayBuffer of weights must be the second element of the array\");\n if (!(\"modelTopology\" in o))\n throw new Error(\"Model JSON is missing 'modelTopology'\");\n if (!(\"weightsManifest\" in o))\n throw new Error(\"Model JSON is missing 'weightsManifest'\");\n let s = La.getWeightSpecs(o.weightsManifest), a = La.getModelArtifactsForJSONSync(o, s, n);\n e = La.fromMemorySync(a);\n } else if (\"load\" in r)\n e = r;\n else if (\"modelTopology\" in r && \"weightSpecs\" in r && \"weightData\" in r)\n e = La.fromMemorySync(r);\n else\n throw new Error(\"Unknown model format\");\n let t10 = new fl(e);\n return t10.load(), t10;\n}\nfunction D6(r) {\n return r.endsWith(\"/\") || (r = r + \"/\"), `${r}${E6}${$6}`;\n}\nvar F6 = \"4.2.0\";\nfunction j(r, e) {\n Array.isArray(r) || (r = [r]), r.forEach((t10) => {\n t10 != null && y.assert(t10.dtype !== \"complex64\", () => `${e} does not support complex64 tensors in the CPU backend.`);\n });\n}\nvar O6 = Vt.whereImpl;\nvar Pi = class extends Zr {\n constructor() {\n super(), this.blockSize = 48, this.firstUse = true, this.data = new Fo(this, sr());\n }\n nextDataId() {\n return Pi.nextDataId++;\n }\n write(e, t10, o) {\n this.firstUse && (this.firstUse = false, O().get(\"IS_NODE\") && S.warn(`\n============================\nHi, looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, visit https://github.com/tensorflow/tfjs-node for more details. \n============================`));\n let n = { id: this.nextDataId() };\n return this.data.set(n, { values: e, dtype: o, refCount: 1 }), n;\n }\n makeTensorInfo(e, t10, o) {\n let n;\n if (t10 === \"string\" && o != null && o.length > 0 && y.isString(o[0])) {\n let s = o.map((a) => y.encodeString(a));\n n = this.write(s, e, t10);\n } else\n n = this.write(o, e, t10);\n return { dataId: n, shape: e, dtype: t10 };\n }\n refCount(e) {\n return this.data.has(e) ? this.data.get(e).refCount : 0;\n }\n incRef(e) {\n let t10 = this.data.get(e);\n t10.refCount++;\n }\n decRef(e) {\n if (this.data.has(e)) {\n let t10 = this.data.get(e);\n t10.refCount--;\n }\n }\n move(e, t10, o, n, s) {\n this.data.set(e, { values: t10, dtype: n, refCount: s });\n }\n numDataIds() {\n return this.data.numDataIds();\n }\n async read(e) {\n return this.readSync(e);\n }\n readSync(e) {\n let { dtype: t10, complexTensorInfos: o } = this.data.get(e);\n if (t10 === \"complex64\") {\n let n = this.readSync(o.real.dataId), s = this.readSync(o.imag.dataId);\n return S.mergeRealAndImagArrays(n, s);\n }\n return y.convertBackendValuesAndArrayBuffer(this.data.get(e).values, t10);\n }\n bufferSync(e) {\n let t10 = this.readSync(e.dataId);\n if (e.dtype === \"string\")\n try {\n let o = t10.map((n) => y.decodeString(n));\n return le(e.shape, e.dtype, o);\n } catch (o) {\n throw new Error(\"Failed to decode encoded string bytes into utf-8\");\n }\n return le(e.shape, e.dtype, t10);\n }\n makeOutput(e, t10, o) {\n return sr().makeTensorFromTensorInfo(this.makeTensorInfo(t10, o, e), this);\n }\n disposeData(e, t10 = false) {\n if (this.data.has(e)) {\n if (this.data.get(e).refCount--, !t10 && this.data.get(e).refCount > 0)\n return false;\n let { complexTensorInfos: o } = this.data.get(e);\n o != null && (this.disposeData(o.real.dataId, true), this.disposeData(o.imag.dataId, true)), this.data.delete(e);\n }\n return true;\n }\n disposeIntermediateTensorInfo(e) {\n this.disposeData(e.dataId);\n }\n async time(e) {\n let t10 = y.now();\n return e(), { kernelMs: y.now() - t10 };\n }\n memory() {\n return { unreliable: true, reasons: [\"The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less.\"] };\n }\n where(e) {\n j([e], \"where\");\n let t10 = this.readSync(e.dataId);\n return O6(e.shape, t10);\n }\n dispose() {\n }\n floatPrecision() {\n return 32;\n }\n epsilon() {\n return super.epsilon();\n }\n};\nPi.nextDataId = 0;\nvar Zp = {};\nGe(Zp, { addImpl: () => uS, bincountImpl: () => jp, bincountReduceImpl: () => uf, castImpl: () => iS, ceilImpl: () => pS, concatImpl: () => Nu, equalImpl: () => cS, expImpl: () => mS, expm1Impl: () => fS, floorImpl: () => hS, gatherNdImpl: () => pf, gatherV2Impl: () => cf, greaterEqualImpl: () => xS, greaterImpl: () => gS, lessEqualImpl: () => bS, lessImpl: () => yS, linSpaceImpl: () => lf, logImpl: () => CS, maxImpl: () => mf, maximumImpl: () => SS, minimumImpl: () => wS, multiplyImpl: () => hl, negImpl: () => IS, notEqualImpl: () => vS, prodImpl: () => kS, raggedGatherImpl: () => df, raggedRangeImpl: () => ff, raggedTensorToTensorImpl: () => hf, rangeImpl: () => _u, rsqrtImpl: () => NS, scatterImpl: () => Va, sigmoidImpl: () => OT, simpleAbsImpl: () => aS, sliceImpl: () => $u, sparseFillEmptyRowsImpl: () => gf, sparseReshapeImpl: () => xf, sparseSegmentReductionImpl: () => Qp, sqrtImpl: () => LT, squaredDifferenceImpl: () => _S, stridedSliceImpl: () => yf, stringNGramsImpl: () => Eu, stringSplitImpl: () => Au, stringToHashBucketFastImpl: () => Ru, subImpl: () => ES, tileImpl: () => bf, topKImpl: () => Cf, transposeImpl: () => Xp, uniqueImpl: () => Sf });\nfunction aS(r) {\n let e = new Float32Array(r.length);\n for (let t10 = 0; t10 < r.length; ++t10)\n e[t10] = Math.abs(r[t10]);\n return e;\n}\nvar P6 = (r) => {\n let { x: e } = r.inputs, t10 = r.backend;\n j(e, \"abs\");\n let o = new Float32Array(y.sizeFromShape(e.shape)), n = t10.data.get(e.dataId).values;\n return o = aS(n), t10.makeOutput(o, e.shape, e.dtype);\n};\nvar iT = { kernelName: ys, backendName: \"cpu\", kernelFunc: P6 };\nfunction Be(r) {\n return (e, t10, o, n, s) => {\n let a = S.assertAndGetBroadcastShape(e, t10), i = a.length, p = y.computeStrides(a), u = y.sizeFromShape(a), c = y.getTypedArrayFromDType(s, u), l = e.length, m = t10.length, d = y.computeStrides(e), f = y.computeStrides(t10), h = S.getBroadcastDims(e, a), g = S.getBroadcastDims(t10, a);\n if (h.length + g.length === 0)\n for (let x = 0; x < c.length; ++x)\n c[x] = r(o[x % o.length], n[x % n.length]);\n else\n for (let x = 0; x < c.length; ++x) {\n let b = y.indexToLoc(x, i, p), C = b.slice(-l);\n h.forEach((E) => C[E] = 0);\n let w = y.locToIndex(C, l, d), k = b.slice(-m);\n g.forEach((E) => k[E] = 0);\n let _ = y.locToIndex(k, m, f);\n c[x] = r(o[w], n[_]);\n }\n return [c, a];\n };\n}\nfunction Ht(r) {\n let { inputs: e, backend: t10 } = r, { real: o, imag: n } = e, s = t10.data.get(o.dataId).values, a = t10.data.get(n.dataId).values, i = t10.makeTensorInfo(o.shape, \"complex64\"), p = t10.data.get(i.dataId);\n return p.complexTensorInfos = { real: t10.makeTensorInfo(o.shape, \"float32\", s), imag: t10.makeTensorInfo(n.shape, \"float32\", a) }, i;\n}\nvar uT = { kernelName: ri, backendName: \"cpu\", kernelFunc: Ht };\nfunction Kp(r, e, t10 = \"float32\") {\n if (t10 === \"complex64\") {\n let n = Kp(r, e, \"float32\"), s = Kp(r, e, \"float32\");\n return Ht({ inputs: { real: n, imag: s }, backend: r });\n }\n let o = y.makeZerosTypedArray(y.sizeFromShape(e), t10);\n return r.makeTensorInfo(e, t10, o);\n}\nfunction ir(r) {\n let { inputs: e, backend: t10 } = r, { x: o } = e;\n return t10.incRef(o.dataId), { dataId: o.dataId, shape: o.shape, dtype: o.dtype };\n}\nvar pT = { kernelName: mo, backendName: \"cpu\", kernelFunc: ir };\nfunction Io(r) {\n let { inputs: e, backend: t10 } = r, { input: o } = e, n = t10.data.get(o.dataId).complexTensorInfos.real, s = t10.data.get(n.dataId).values;\n return t10.makeTensorInfo(n.shape, n.dtype, s);\n}\nvar cT = { kernelName: di, backendName: \"cpu\", kernelFunc: Io };\nfunction iS(r, e, t10, o) {\n if (o === \"int32\") {\n let n = Int32Array.from(r);\n return [e, \"int32\", n];\n }\n if (o === \"bool\") {\n let n = y.toTypedArray([0], t10), [s, a] = Be((i, p) => i !== p ? 1 : 0)(e, [], r, n, \"bool\");\n return [a, \"bool\", s];\n }\n throw new Error(`Error in Cast: failed to cast ${t10} to ${o}`);\n}\nfunction vo(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { dtype: s } = o;\n if (s === \"complex64\") {\n if (n.dtype === \"complex64\")\n return ir({ inputs: { x: n }, backend: t10 });\n let c = Kp(t10, n.shape, n.dtype), l = vo({ inputs: { x: n }, backend: t10, attrs: { dtype: \"float32\" } }), m = Ht({ inputs: { real: l, imag: c }, backend: t10 });\n return t10.disposeIntermediateTensorInfo(c), t10.disposeIntermediateTensorInfo(l), m;\n }\n if (n.dtype === \"complex64\") {\n let c = Io({ inputs: { input: n }, backend: t10 }), l = vo({ inputs: { x: c }, backend: t10, attrs: { dtype: s } });\n return t10.disposeIntermediateTensorInfo(c), l;\n }\n if (!y.hasEncodingLoss(n.dtype, s)) {\n let c = ir({ inputs: { x: n }, backend: t10 });\n return { dataId: c.dataId, shape: c.shape, dtype: s };\n }\n let a = t10.data.get(n.dataId).values, [i, p, u] = iS(a, n.shape, n.dtype, s);\n return t10.makeTensorInfo(i, p, u);\n}\nvar lT = { kernelName: co, backendName: \"cpu\", kernelFunc: vo };\nfunction Qe(r, e, t10, o) {\n return t10 == null ? ({ inputs: n, backend: s }) => {\n let { a, b: i } = n, p = s;\n j([a, i], r);\n let u = p.data.get(a.dataId).values, c = p.data.get(i.dataId).values, l = a.dtype === \"string\" ? S.fromUint8ToStringArray(u) : u, m = a.dtype === \"string\" ? S.fromUint8ToStringArray(c) : c, d = o || a.dtype, [f, h] = e(a.shape, i.shape, l, m, d);\n return p.makeTensorInfo(h, d, f);\n } : ({ inputs: n, backend: s }) => {\n let { a, b: i } = n, p = s;\n if (a.dtype === \"complex64\" || i.dtype === \"complex64\") {\n let u = vo({ inputs: { x: a }, backend: p, attrs: { dtype: \"complex64\" } }), c = p.data.get(u.dataId), l = c.complexTensorInfos.real, m = c.complexTensorInfos.imag, d = p.data.get(l.dataId).values, f = p.data.get(m.dataId).values, h = vo({ inputs: { x: i }, backend: p, attrs: { dtype: \"complex64\" } }), g = p.data.get(h.dataId), x = g.complexTensorInfos.real, b = g.complexTensorInfos.imag, C = p.data.get(x.dataId).values, w = p.data.get(b.dataId).values, [k, _, E] = t10(a.shape, i.shape, d, f, C, w), A = p.makeTensorInfo(E, \"float32\", k), R = p.makeTensorInfo(E, \"float32\", _), D = Ht({ inputs: { real: A, imag: R }, backend: p });\n return p.disposeIntermediateTensorInfo(u), p.disposeIntermediateTensorInfo(h), p.disposeIntermediateTensorInfo(A), p.disposeIntermediateTensorInfo(R), D;\n } else {\n let u = p.data.get(a.dataId).values, c = p.data.get(i.dataId).values, l = o || a.dtype, [m, d] = e(a.shape, i.shape, u, c, l);\n return p.makeTensorInfo(d, l, m);\n }\n };\n}\nfunction qp(r) {\n return (e, t10, o, n, s, a) => {\n let i = S.assertAndGetBroadcastShape(e, t10), p = y.sizeFromShape(i), u = i.length, c = y.computeStrides(i), l = y.getTypedArrayFromDType(\"float32\", p), m = y.getTypedArrayFromDType(\"float32\", p), d = S.getBroadcastDims(e, i), f = S.getBroadcastDims(t10, i), h = S.mergeRealAndImagArrays(o, n), g = S.mergeRealAndImagArrays(s, a), x = e.length, b = y.computeStrides(e), C = t10.length, w = y.computeStrides(t10);\n if (d.length + f.length === 0)\n for (let k = 0; k < l.length; k++) {\n let _ = k % h.length, E = k % g.length, A = r(h[_ * 2], h[_ * 2 + 1], g[E * 2], g[E * 2 + 1]);\n l[k] = A.real, m[k] = A.imag;\n }\n else\n for (let k = 0; k < l.length; k++) {\n let _ = y.indexToLoc(k, u, c), E = _.slice(-x);\n d.forEach((M) => E[M] = 0);\n let A = y.locToIndex(E, x, b), R = _.slice(-C);\n f.forEach((M) => R[M] = 0);\n let D = y.locToIndex(R, C, w), P = r(h[A * 2], h[A * 2 + 1], g[D * 2], g[D * 2 + 1]);\n l[k] = P.real, m[k] = P.imag;\n }\n return [l, m, i];\n };\n}\nvar uS = Be((r, e) => r + e);\nvar M6 = qp((r, e, t10, o) => ({ real: r + t10, imag: e + o }));\nvar Xs = Qe(eo, uS, M6);\nvar mT = { kernelName: eo, backendName: \"cpu\", kernelFunc: Xs };\nfunction jp(r, e, t10, o, n) {\n let s = y.sizeFromShape(o), a = y.makeZerosTypedArray(n, t10);\n for (let i = 0; i < r.length; i++) {\n let p = r[i];\n if (p < 0)\n throw new Error(\"Input x must be non-negative!\");\n p >= n || (s > 0 ? a[p] += e[i] : a[p] += 1);\n }\n return a;\n}\nfunction uf(r, e, t10, o = false) {\n let n = r.shape[0], s = r.shape[1], a = le([n, t10], e.dtype);\n for (let i = 0; i < n; i++)\n for (let p = 0; p < s; p++) {\n let u = r.get(i, p);\n if (u < 0)\n throw new Error(\"Input x must be non-negative!\");\n u >= t10 || (o ? a.set(1, i, u) : e.size > 0 ? a.set(a.get(i, u) + e.get(i, p), i, u) : a.set(a.get(i, u) + 1, i, u));\n }\n return a;\n}\nfunction vr(r) {\n return (e, t10, o) => {\n let n = y.getTypedArrayFromDType(t10, e.length);\n for (let s = 0; s < e.length; ++s)\n n[s] = r(e[s], o);\n return n;\n };\n}\nfunction we(r, e, t10) {\n return ({ inputs: o, attrs: n, backend: s }) => {\n let { x: a } = o;\n if (j(a, r), a.dtype === \"string\" || t10 === \"string\")\n throw new Error(\"unaryKernelFunc does not support string input/output\");\n let i = s, p = i.data.get(a.dataId).values, u = y.sizeFromShape(a.shape), c = t10 || a.dtype, l = y.getArrayFromDType(c, u);\n for (let m = 0; m < u; ++m)\n l[m] = e(p[m], n);\n return i.makeTensorInfo(a.shape, c, l);\n };\n}\nfunction ko(r, e, t10) {\n return ({ inputs: o, attrs: n, backend: s }) => {\n let { x: a } = o;\n if (j(a, r), a.dtype === \"string\" || t10 === \"string\")\n throw new Error(\"unaryKernelFunc does not support string input/output\");\n let i = s, p = i.data.get(a.dataId).values, u = t10 || a.dtype, c = e(p, u, n);\n return i.makeTensorInfo(a.shape, u, c);\n };\n}\nvar pS = vr((r) => Math.ceil(r));\nvar L6 = ko(Wo, pS);\nvar dT = { kernelName: Wo, backendName: \"cpu\", kernelFunc: L6 };\nfunction Nu(r, e, t10, o) {\n let n = y.getArrayFromDType(t10, y.sizeFromShape(e));\n if (o && t10 !== \"string\") {\n let s = 0;\n r.forEach((a) => {\n let i = y.sizeFromShape(a.shape);\n n.set(a.vals, s), s += i;\n });\n } else {\n let s = 0;\n r.forEach((a) => {\n let i = t10 === \"string\" ? S.fromUint8ToStringArray(a.vals) : a.vals, p = 0;\n for (let u = 0; u < a.shape[0]; ++u) {\n let c = u * e[1] + s;\n for (let l = 0; l < a.shape[1]; ++l)\n n[c + l] = i[p++];\n }\n s += a.shape[1];\n });\n }\n return n;\n}\nvar cS = Be((r, e) => r === e ? 1 : 0);\nvar lS = Qe(en, cS, null, \"bool\");\nvar fT = { kernelName: en, backendName: \"cpu\", kernelFunc: lS };\nvar mS = vr((r) => Math.exp(r));\nvar dS = ko(tn, mS, \"float32\");\nvar hT = { kernelName: tn, backendName: \"cpu\", kernelFunc: dS };\nvar fS = vr((r) => Math.expm1(r));\nvar B6 = ko(fa, fS);\nvar gT = { kernelName: fa, backendName: \"cpu\", kernelFunc: B6 };\nvar hS = vr((r) => Math.floor(r));\nvar V6 = ko(on, hS);\nvar xT = { kernelName: on, backendName: \"cpu\", kernelFunc: V6 };\nfunction pf(r, e, t10, o, n, s, a, i, p) {\n let u = le([o, s], t10);\n for (let c = 0; c < o; c++) {\n let l = [], m = 0;\n for (let d = 0; d < n; d++) {\n let f = r[c * n + d];\n m += f * a[d], l.push(f);\n }\n if (m < 0 || m >= p / s)\n throw new Error(`Invalid indices: ${l} does not index into ${i}`);\n for (let d = 0; d < s; d++)\n u.values[c * s + d] = e.get(...e.indexToLoc(m * s + d));\n }\n return u;\n}\nfunction cf(r, e, t10) {\n let o = le(t10, r.dtype);\n for (let n = 0; n < o.size; ++n) {\n let a = o.indexToLoc(n).slice(), i = a[0], p = a[2], u = e.locToIndex([i, p]);\n a[2] = e.values[u];\n let c = r.locToIndex(a);\n 0 <= c && c < r.values.length && (o.values[n] = r.values[c]);\n }\n return o;\n}\nvar gS = Be((r, e) => r > e ? 1 : 0);\nvar z6 = Qe(un, gS, null, \"bool\");\nvar yT = { kernelName: un, backendName: \"cpu\", kernelFunc: z6 };\nvar xS = Be((r, e) => r >= e ? 1 : 0);\nvar W6 = Qe(pn, xS, null, \"bool\");\nvar bT = { kernelName: pn, backendName: \"cpu\", kernelFunc: W6 };\nvar yS = Be((r, e) => r < e ? 1 : 0);\nvar U6 = Qe(mn, yS, null, \"bool\");\nvar CT = { kernelName: mn, backendName: \"cpu\", kernelFunc: U6 };\nvar bS = Be((r, e) => r <= e ? 1 : 0);\nvar G6 = Qe(dn, bS, null, \"bool\");\nvar ST = { kernelName: dn, backendName: \"cpu\", kernelFunc: G6 };\nfunction lf(r, e, t10) {\n let o = (e - r) / (t10 - 1), n = y.makeZerosTypedArray(t10, \"float32\");\n n[0] = r;\n for (let s = 1; s < n.length; s++)\n n[s] = n[s - 1] + o;\n return n;\n}\nvar CS = vr((r) => Math.log(r));\nvar H6 = ko(fn, CS);\nvar wT = { kernelName: fn, backendName: \"cpu\", kernelFunc: H6 };\nfunction mf(r, e, t10, o) {\n let n = y.getTypedArrayFromDType(o, y.sizeFromShape(t10));\n for (let s = 0; s < n.length; ++s) {\n let a = s * e, i = r[a];\n for (let p = 0; p < e; ++p) {\n let u = r[a + p];\n (Number.isNaN(u) || u > i) && (i = u);\n }\n n[s] = i;\n }\n return n;\n}\nvar SS = Be((r, e) => Math.max(r, e));\nvar K6 = Qe(bn, SS);\nvar IT = { kernelName: bn, backendName: \"cpu\", kernelFunc: K6 };\nvar wS = Be((r, e) => Math.min(r, e));\nvar q6 = Qe(In, wS);\nvar vT = { kernelName: In, backendName: \"cpu\", kernelFunc: q6 };\nvar hl = Be((r, e) => r * e);\nvar j6 = qp((r, e, t10, o) => ({ real: r * t10 - e * o, imag: r * o + e * t10 }));\nvar Tu = Qe(kn, hl, j6);\nvar kT = { kernelName: kn, backendName: \"cpu\", kernelFunc: Tu };\nfunction IS(r, e, t10) {\n let o = y.createScalarValue(-1, t10);\n return hl([], e, o, r, t10);\n}\nfunction X6(r) {\n let { inputs: e, backend: t10 } = r, { x: o } = e;\n j(o, \"neg\");\n let n = t10.data.get(o.dataId).values, [s, a] = IS(n, o.shape, o.dtype);\n return t10.makeTensorInfo(a, o.dtype, s);\n}\nvar NT = { kernelName: vs, backendName: \"cpu\", kernelFunc: X6 };\nvar vS = Be((r, e) => r !== e ? 1 : 0);\nvar Y6 = Qe(Nn, vS, null, \"bool\");\nvar TT = { kernelName: Nn, backendName: \"cpu\", kernelFunc: Y6 };\nfunction Xp(r, e, t10, o, n) {\n let s = e.length, a = y.sizeFromShape(e), i = y.computeStrides(e), p = y.computeStrides(n), u = y.getTypedArrayFromDType(t10, y.sizeFromShape(n));\n for (let c = 0; c < a; ++c) {\n let l = y.indexToLoc(c, s, i), m = new Array(l.length);\n for (let f = 0; f < m.length; f++)\n m[f] = l[o[f]];\n let d = y.locToIndex(m, s, p);\n u[d] = r[c];\n }\n return u;\n}\nfunction St(r) {\n let { inputs: e, attrs: t10, backend: o } = r, { x: n } = e, { perm: s } = t10;\n j(n, \"transpose\");\n let a = n.shape.length, i = new Array(a);\n for (let l = 0; l < i.length; l++)\n i[l] = n.shape[s[l]];\n let p = o.data.get(n.dataId).values, u = Xp(p, n.shape, n.dtype, s, i);\n return { dataId: o.write(u, i, n.dtype), shape: i, dtype: n.dtype };\n}\nvar _T = { kernelName: ro, backendName: \"cpu\", kernelFunc: St };\nfunction kS(r, e, t10, o) {\n let [n, s] = S.computeOutAndReduceShapes(r, o), a = dt(e, \"int32\"), i = y.makeZerosTypedArray(y.sizeFromShape(n), a), p = y.sizeFromShape(s);\n for (let u = 0; u < i.length; ++u) {\n let c = u * p, l = 1;\n for (let m = 0; m < p; ++m)\n l *= t10[c + m];\n i[u] = l;\n }\n return { outVals: i, outShape: n, outDtype: a };\n}\nfunction Q6(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s, keepDims: a } = o;\n j(n, \"prod\");\n let i = n.shape.length, p = y.parseAxisParam(s, n.shape), u = S.getAxesPermutation(p, i), c = p, l = n, m = [];\n u != null && (l = St({ inputs: { x: n }, backend: t10, attrs: { perm: u } }), m.push(l), c = S.getInnerMostAxes(c.length, i));\n let d = t10.data.get(l.dataId).values, { outVals: f, outShape: h, outDtype: g } = kS(l.shape, l.dtype, d, c), x = h;\n return a && (x = S.expandShapeToKeepDim(h, p)), m.forEach((b) => t10.disposeIntermediateTensorInfo(b)), t10.makeTensorInfo(x, g, f);\n}\nvar $T = { kernelName: Dn, backendName: \"cpu\", kernelFunc: Q6 };\nfunction Z6(r, e, t10) {\n r.forEach((o, n) => {\n if (o < 0 || o >= t10) {\n let s = y.indexToLoc(n, e.length, y.computeStrides(e)).join(\",\");\n throw new Error(`indices[${s}] = ${o} is not in [0, ${t10})`);\n }\n });\n}\nfunction J6(r, e) {\n for (let t10 = 0; t10 < r.length; ++t10) {\n let o = r[t10], n = t10 === r.length - 1 ? e : r[t10 + 1].length;\n if (o.length === 0)\n throw new Error(\"Ragged splits may not be empty\");\n if (o[0] < 0)\n throw new Error(\"Ragged splits must be non-negative\");\n if (o[o.length - 1] > n)\n throw new Error(\"Ragged splits must not point past values\");\n for (let s = 1; s < o.length; ++s)\n if (o[s - 1] > o[s])\n throw new Error(\"Ragged splits must be sorted in ascending order\");\n }\n}\nfunction ej(r, e, t10, o) {\n let n = [], s = 0, a = e.length - 1 + t10.length, i = new Array(a).fill(null).map(() => [0]);\n J6(t10, o);\n let p = 1;\n for (let u = 0; u < e.length - 1; ++u) {\n p *= e[u];\n let c = e[u + 1];\n for (let l = 1; l < p + 1; ++l)\n i[u].push(l * c);\n }\n for (let u = 0; u < r.length; ++u) {\n let c = r[u], l = r[u] + 1;\n for (let m = 0; m < t10.length; ++m) {\n let d = t10[m], f = m + e.length - 1;\n if (f >= 0) {\n let h = i[f], g = h[h.length - 1] - d[c];\n for (let x = c; x < l; ++x)\n i[f].push(d[x + 1] + g);\n }\n c = d[c], l = d[l];\n }\n l !== c && (n.push([c, l]), s += l - c);\n }\n return { outSplits: i, valueSlices: n, numValues: s };\n}\nfunction tj(r) {\n let e = [];\n for (let t10 = 0; t10 < r.length; ++t10) {\n let o = r[t10].length, n = y.getArrayFromDType(\"int32\", o);\n e.push(n), r[t10].forEach((s, a) => n[a] = s);\n }\n return e;\n}\nfunction ET(r, e) {\n let t10 = r.slice(0, e);\n for (; t10.length < e; )\n t10.push(1);\n for (let o = e; o < r.length; o++)\n t10[e - 1] *= r[o];\n return t10;\n}\nfunction rj(r, e, t10, o, n, s) {\n let a = ET(e, 2)[1], i = ET(s, 2)[1], p = 0;\n for (let u of t10)\n for (let c = u[0]; c < u[1]; ++c) {\n for (let l = 0; l < o; ++l)\n n[p * i + l] = r[c * a + l];\n ++p;\n }\n}\nfunction oj(r, e, t10, o, n) {\n let s = e.slice();\n s[0] = n;\n let a = y.getArrayFromDType(t10, y.sizeFromShape(s)), i = r.length, p = i === 0 ? 0 : i / e[0];\n return rj(r, e, o, p, a, s), [a, s];\n}\nfunction df(r, e, t10, o, n, s, a, i) {\n if (r.length === 0)\n throw new Error(\"paramsNestedSplits must be non empty\");\n if (e[0].length === 0)\n throw new Error(\"Split tensors must not be scalars\");\n let p = e[0][0] - 1;\n if (Z6(s, a, p), o.length === 0)\n throw new Error(\"params.rank must be nonzero\");\n let u = o[0], { outSplits: c, valueSlices: l, numValues: m } = ej(s, a, r, u), d = tj(c), f = oj(t10, o, n, l, m);\n return [d, f[0], f[1]];\n}\nvar AT = 2147483647;\nfunction ff(r, e, t10, o, n, s, a) {\n if (e.length > 1)\n throw new Error(\"starts must be a scalar or vector\");\n if (n.length > 1)\n throw new Error(\"limits must be a scalar or vector\");\n if (a.length > 1)\n throw new Error(\"deltas must be a scalar or vector\");\n let i = e.length === 0, p = n.length === 0, u = a.length === 0, c = [];\n i || c.push(e[0]), p || c.push(n[0]), u || c.push(a[0]);\n for (let g = 1; g < c.length; ++g)\n if (c[g] !== c[g - 1])\n throw new Error(\"starts, limits, and deltas must have the same shape\");\n let l = c.length === 0 ? 1 : c[0], m = y.getArrayFromDType(\"int32\", l + 1);\n m[0] = 0;\n for (let g = 0; g < l; ++g) {\n let x = i ? r[0] : r[g], b = p ? o[0] : o[g], C = u ? s[0] : s[g];\n if (C === 0)\n throw new Error(\"Requires delta != 0\");\n let w;\n if (C > 0 && b < x || C < 0 && b > x)\n w = 0;\n else if (w = Math.ceil(Math.abs((b - x) / C)), w > AT)\n throw new Error(`Requires ((limit - start) / delta) <= ${AT}`);\n m[g + 1] = m[g] + w;\n }\n let d = m[l], f = y.getArrayFromDType(t10, d), h = 0;\n for (let g = 0; g < l; ++g) {\n let x = m[g + 1] - m[g], b = i ? r[0] : r[g], C = u ? s[0] : s[g];\n for (let w = 0; w < x; ++w)\n f[h++] = b, b += C;\n }\n return [m, f];\n}\nvar No = S.RowPartitionType;\nvar Yp = class {\n constructor(e, t10, o, n, s, a, i, p, u, c) {\n this.shape = e, this.shapeShape = t10, this.values = o, this.valuesShape = n, this.valuesDType = s, this.defaultValue = a, this.defaultValueShape = i, this.rowPartitionValues = p, this.rowPartitionValuesShapes = u, this.rowPartitionTypes = S.getRowPartitionTypesHelper(c), this.raggedRank = S.getRaggedRank(this.rowPartitionTypes);\n }\n getRowPartitionTypeByDimension(e) {\n return this.rowPartitionTypes[0] === No.FIRST_DIM_SIZE ? this.rowPartitionTypes[e + 1] : this.rowPartitionTypes[e];\n }\n getRowPartitionTensor(e) {\n return this.rowPartitionTypes[0] === No.FIRST_DIM_SIZE ? this.rowPartitionValues[e + 1] : this.rowPartitionValues[e];\n }\n getMaxWidth(e) {\n let t10 = this.getRowPartitionTensor(e - 1);\n switch (this.getRowPartitionTypeByDimension(e - 1)) {\n case No.VALUE_ROWIDS:\n return Yp.getMaxWidthValueRowID(t10);\n case No.ROW_SPLITS:\n return Yp.getMaxWidthRowSplit(t10);\n default:\n throw new Error(`Cannot handle partition type ${No[this.getRowPartitionTypeByDimension(e - 1)]}`);\n }\n }\n static getMaxWidthRowSplit(e) {\n let t10 = e.length;\n if (t10 === 0 || t10 === 1)\n return 0;\n let o = 0;\n for (let n = 0; n < t10 - 1; ++n) {\n let s = e[n + 1] - e[n];\n s > o && (o = s);\n }\n return o;\n }\n static getMaxWidthValueRowID(e) {\n let t10 = e.length;\n if (t10 === 0)\n return 0;\n let o = 0, n = e[0], s = 0;\n for (let a = 1; a < t10; ++a) {\n let i = e[a];\n i !== n && (n = i, s = Math.max(a - o, s), o = a);\n }\n return Math.max(t10 - o, s);\n }\n tensorShapeFromTensor(e, t10, o = true) {\n if (t10.length === 0) {\n if (e[0] === -1)\n return [];\n throw new Error(\"The only valid scalar shape tensor is the fully unknown shape specified as -1.\");\n }\n return DT(e, o);\n }\n calculateOutputSize(e) {\n let t10 = this.valuesShape, o = this.defaultValueShape;\n S.validateDefaultValueShape(o, t10);\n let n = this.tensorShapeFromTensor(this.shape, this.shapeShape), a = S.combineRaggedTensorToTensorShapes(this.raggedRank, n, t10);\n a[0] < 0 && (a[0] = e);\n for (let i = 1; i <= this.raggedRank; ++i)\n a[i] < 0 && (a[i] = this.getMaxWidth(i));\n return a;\n }\n calculateFirstParentOutputIndex(e, t10, o) {\n let n = Math.min(e, o), s = [], a = 0;\n for (let i = 0; i < n; ++i, a += t10)\n s.push(a);\n for (let i = n; i < e; ++i)\n s.push(-1);\n return y.assert(s.length === e, () => \"Final length of result must be equal to firstDimension.\"), s;\n }\n calculateOutputIndexRowSplit(e, t10, o, n) {\n let s = e.length, a = [];\n for (let i = 0; i < s - 1; ++i) {\n let p = e[i + 1] - e[i], u = Math.min(n, p), c = t10[i];\n c === -1 && (u = 0);\n for (let l = 0; l < u; ++l)\n a.push(c), c += o;\n for (let l = 0; l < p - u; ++l)\n a.push(-1);\n }\n if (s > 0 && a.length !== e[s - 1])\n throw new Error(\"Invalid row split size.\");\n return a;\n }\n calculateOutputIndexValueRowID(e, t10, o, n) {\n let s = e.length, a = [];\n if (s === 0)\n return [];\n let i = 0, p = e[0];\n if (p >= t10.length)\n throw new Error(`Got currentValueRowId=${p}, which is not less than ${t10.length}`);\n let u = t10[p];\n a.push(u);\n for (let c = 1; c < s; ++c) {\n let l = e[c];\n if (l === p)\n u >= 0 && (++i, i < n ? u += o : u = -1);\n else {\n if (i = 0, p = l, l >= t10.length)\n throw new Error(`Got nextValueRowId=${l} which is not less than ${t10.length}`);\n u = t10[l];\n }\n a.push(u);\n }\n if (a.length !== e.length)\n throw new Error(\"Invalid row ids.\");\n return a;\n }\n calculateOutputIndex(e, t10, o, n) {\n let s = this.getRowPartitionTensor(e), a = this.getRowPartitionTypeByDimension(e);\n switch (a) {\n case No.VALUE_ROWIDS:\n return this.calculateOutputIndexValueRowID(s, t10, o, n);\n case No.ROW_SPLITS:\n if (s.length - 1 > t10.length)\n throw new Error(`Row partition size is greater than output size: ${s.length - 1} > ${t10.length}`);\n return this.calculateOutputIndexRowSplit(s, t10, o, n);\n default:\n throw new Error(`Unsupported partition type: ${No[a]}`);\n }\n }\n getFirstDimensionSize() {\n let e = this.rowPartitionValues[0];\n if (this.rowPartitionTypes.length === 0)\n throw new Error(\"No row_partition_types given.\");\n let t10 = this.rowPartitionTypes[0];\n switch (t10) {\n case No.FIRST_DIM_SIZE:\n return e[0];\n case No.VALUE_ROWIDS:\n throw new Error(\"Cannot handle VALUE_ROWIDS in first dimension.\");\n case No.ROW_SPLITS:\n return this.rowPartitionValuesShapes[0][0] - 1;\n default:\n throw new Error(`Cannot handle type ${No[t10]}`);\n }\n }\n compute() {\n if (this.rowPartitionValues[0].length <= 0)\n throw new Error(\"Invalid first partition input. Tensor requires at least one element.\");\n let t10 = this.getFirstDimensionSize(), o = this.calculateOutputSize(t10), n = new Array(this.raggedRank + 1);\n n[n.length - 1] = 1;\n for (let p = n.length - 2; p >= 0; --p)\n n[p] = n[p + 1] * o[p + 1];\n let s = DT(o, false), a = y.getArrayFromDType(this.valuesDType, y.sizeFromShape(s));\n if (n[0] * o[0] > 0) {\n let p = this.calculateFirstParentOutputIndex(t10, n[0], o[0]);\n for (let u = 1; u <= this.raggedRank; ++u)\n p = this.calculateOutputIndex(u - 1, p, n[u], o[u]);\n this.setOutput(this.raggedRank, p, a, s);\n }\n return [s, a];\n }\n setOutput(e, t10, o, n) {\n if (o.length === 0)\n return;\n let s = this.values, a = o, i = n.slice();\n i = i.slice(e + 1);\n let p = y.sizeFromShape(i), u = t10.length, c = this.defaultValue;\n if (c.length !== p && c.length !== 1) {\n let f = this.defaultValueShape;\n Ee(() => {\n let h = W(c, f);\n c = $i(h, i).dataSync();\n });\n }\n let l = 0, m = 0, d = 0;\n for (let f = 0; f <= u; ++f) {\n let h = f < u ? t10[f] : -1;\n if (h === d) {\n ++d;\n continue;\n }\n if (m < d) {\n let g = s.subarray(l * p), x = a.subarray(m * p), b = (d - m) * p;\n RT(x, g, b);\n }\n if (f >= u) {\n let g = o.length;\n h = Math.floor(g / p);\n }\n if (h > d)\n if (this.defaultValue.length === 1)\n a.subarray(d * p, h * p).fill(this.defaultValue[0]), d = h;\n else\n for (; h > d; ) {\n let g = a.slice(d * p);\n RT(g, c, p), ++d;\n }\n h < 0 ? (l = f + 1, m = d) : (l = f, m = d, d = m + 1);\n }\n }\n};\nfunction RT(r, e, t10) {\n for (let o = 0; o < t10; o++)\n r[o] = e[o];\n}\nfunction DT(r, e) {\n let t10 = [];\n for (let o of r) {\n if (o < 0) {\n if (!e)\n throw new Error(`Dimension ${o} must be >= 0`);\n if (o < -1)\n throw new Error(`Dimension ${o} must be >= -1`);\n o = -1;\n }\n t10.push(o);\n }\n return t10;\n}\nfunction hf(r, e, t10, o, n, s, a, i, p, u) {\n return new Yp(r, e, t10, o, n, s, a, i, p, u).compute();\n}\nfunction _u(r, e, t10, o) {\n let n = r === e, s = r < e && t10 < 0, a = e < r && t10 > 1;\n if (n || s || a)\n return y.makeZerosTypedArray(0, o);\n let i = Math.abs(Math.ceil((e - r) / t10)), p = y.makeZerosTypedArray(i, o);\n e < r && t10 === 1 && (t10 = -1), p[0] = r;\n for (let u = 1; u < p.length; u++)\n p[u] = p[u - 1] + t10;\n return p;\n}\nvar NS = vr((r) => 1 / Math.sqrt(r));\nvar nj = ko(zn, NS);\nvar FT = { kernelName: zn, backendName: \"cpu\", kernelFunc: nj };\nfunction Va(r, e, t10, o, n, s, a, i, p, u) {\n let c = [o / n, n], l = r.values, m = e.values;\n if (o === 0)\n return le(t10, e.dtype);\n let d = le(c, e.dtype);\n typeof p == \"string\" || typeof p == \"number\" ? d.values.fill(p) : typeof p == \"boolean\" && d.values.fill(+p);\n for (let f = 0; f < s; f++) {\n let h = [], g = 0;\n for (let x = 0; x < a; x++) {\n let b = l[f * a + x];\n h.push(b), g += b * i[x];\n }\n if (g < 0 || g >= o / n)\n throw new Error(`Invalid indices: ${h} does not index into ${t10}`);\n for (let x = 0; x < n; x++)\n u ? d.values[g * n + x] += m[f * n + x] : d.values[g * n + x] = e.rank === 0 ? m[0] : m[f * n + x];\n }\n return d;\n}\nvar OT = vr((r) => 1 / (1 + Math.exp(-r)));\nvar TS = we(Gn, (r) => 1 / (1 + Math.exp(-r)));\nvar PT = { kernelName: Gn, backendName: \"cpu\", kernelFunc: TS };\nfunction $u(r, e, t10, o, n) {\n let s = ut.isSliceContinous(o, e, t10), a = y.sizeFromShape(t10), i = y.computeStrides(o);\n if (s) {\n let l = ut.computeFlatOffset(e, i);\n return n === \"string\" ? r.slice(l, l + a) : r.subarray(l, l + a);\n }\n let p = n === \"string\" ? S.fromUint8ToStringArray(r) : r, u = le(o, n, p), c = le(t10, n);\n for (let l = 0; l < c.size; ++l) {\n let m = c.indexToLoc(l), d = m.map((f, h) => f + e[h]);\n c.set(u.get(...d), ...m);\n }\n return n === \"string\" ? S.fromStringArrayToUint8(c.values) : c.values;\n}\nfunction To(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { begin: s, size: a } = o;\n j(n, \"slice\");\n let [i, p] = ut.parseSliceParams(n, s, a);\n ut.assertParamsValid(n, i, p);\n let u = t10.data.get(n.dataId).values, c = $u(u, i, p, n.shape, n.dtype);\n return t10.makeTensorInfo(p, n.dtype, c);\n}\nvar MT = { kernelName: Es, backendName: \"cpu\", kernelFunc: To };\nfunction gf(r, e, t10, o, n, s, a) {\n let i = e[0], p = s[0], u = new Array(p), c = new Array(i), l = e[1];\n if (p === 0) {\n if (i !== 0)\n throw new Error(S.getSparseFillEmptyRowsIndicesDenseShapeMismatch(i));\n let g = y.getArrayFromDType(t10, 0), x = y.getArrayFromDType(n, 0);\n return [g, [0, l], x, u, c];\n }\n let m = true, d = 0, f = new Array(p).fill(0);\n for (let g = 0; g < i; ++g) {\n let x = r[g * l];\n if (x < 0)\n throw new Error(S.getSparseFillEmptyRowsNegativeIndexErrorMessage(g, x));\n if (x >= p)\n throw new Error(S.getSparseFillEmptyRowsOutOfRangeIndexErrorMessage(g, x, p));\n ++f[x], m = m && x >= d, d = x;\n }\n let h = true;\n for (let g = 0; g < p; ++g) {\n let x = f[g] === 0;\n u[g] = x, h = h && !x, f[g] = Math.max(f[g], 1), g > 0 && (f[g] += f[g - 1]);\n }\n if (h && m) {\n let g = r, x = o;\n for (let b = 0; b < i; ++b)\n c[b] = b;\n return [g, [i, l], x, u, c];\n } else {\n let g = f[p - 1], x = y.getArrayFromDType(t10, g * l), b = y.getArrayFromDType(n, g), C = new Array(p).fill(0);\n for (let w = 0; w < i; ++w) {\n let k = r[w * l], _ = C[k], E = (k === 0 ? 0 : f[k - 1]) + _;\n C[k]++;\n for (let A = 0; A < l; ++A)\n x[E * l + A] = r[w * l + A];\n b[E] = o[w], c[w] = E;\n }\n for (let w = 0; w < p; ++w)\n if (C[w] === 0) {\n let _ = w === 0 ? 0 : f[w - 1];\n x[_ * l + 0] = w;\n for (let E = 1; E < l; ++E)\n x[_ * l + E] = 0;\n b[_] = a;\n }\n return [x, [g, l], b, u, c];\n }\n}\nfunction xf(r, e, t10, o, n) {\n let s = y.sizeFromShape(o), a = e[0], i = n.length, p = [], u = 1, c = -1;\n for (let g = 0; g < i; ++g) {\n let x = n[g];\n if (x === -1) {\n if (c !== -1)\n throw new Error(S.getSparseReshapeMultipleNegativeOneOutputDimErrorMessage(c, g));\n c = g, p.push(1);\n } else {\n if (x < 0)\n throw new Error(S.getSparseReshapeNegativeOutputDimErrorMessage(g, x));\n u *= x, p.push(x);\n }\n }\n if (c !== -1) {\n if (u <= 0)\n throw new Error(S.getSparseReshapeEmptyTensorZeroOutputDimErrorMessage());\n let g = Math.trunc(s / u);\n if (u * g !== s)\n throw new Error(S.getSparseReshapeInputOutputMultipleErrorMessage(o, p));\n p[c] = g;\n }\n if (y.sizeFromShape(p) !== s)\n throw new Error(S.getSparseReshapeInputOutputMismatchErrorMessage(o, p));\n let m = o.length, d = [];\n if (m > 0) {\n d[m - 1] = 1;\n for (let g = m - 2; g >= 0; --g)\n d[g] = d[g + 1] * o[g + 1];\n }\n let f = [];\n if (i > 0) {\n f[i - 1] = 1;\n for (let g = i - 2; g >= 0; --g)\n f[g] = f[g + 1] * p[g + 1];\n }\n let h = y.getArrayFromDType(t10, a * i);\n for (let g = 0; g < a; ++g) {\n let x = 0;\n for (let b = 0; b < m; ++b)\n x += r[g * m + b] * d[b];\n for (let b = 0; b < i; ++b)\n h[g * i + b] = Math.trunc(x / f[b]), x %= f[b];\n }\n return [h, [a, i], p];\n}\nfunction Qp(r, e, t10, o, n, s = false, a = 0) {\n let i = o.length, p = [e[0], r.length / e[0]], u = p[1], l = i > 0 ? n[i - 1] + 1 : 0;\n if (l < 0)\n throw new Error(S.getSparseSegmentReductionNegativeSegmentIdsErrorMessage());\n let m = e.slice();\n m[0] = l;\n let d = m.reduce((C, w) => C * w, 1), f = y.getArrayFromDType(t10, d);\n if (i === 0)\n return l > 0 && f.fill(a), [f, m];\n if (l <= 0)\n throw new Error(S.getSparseSegmentReductionNegativeSegmentIdsErrorMessage());\n let h = 0, g = 1, x = 0, b = n[h];\n for (; ; ) {\n let C = 0;\n if (g < i) {\n if (C = n[g], b === C) {\n ++g;\n continue;\n }\n if (b >= C)\n throw new Error(S.getSparseSegmentReductionNonIncreasingSegmentIdsErrorMessage());\n }\n if (b < 0 || b >= l)\n throw new Error(S.getSparseSegmentReductionSegmentIdOutOfRangeErrorMessage(b, l));\n b > x && f.fill(a, x * u, b * u);\n for (let w = h; w < g; ++w) {\n let k = o[w];\n if (k < 0 || k >= p[0])\n throw new Error(S.getSparseSegmentReductionIndicesOutOfRangeErrorMessage(w, o[w], p[0]));\n for (let _ = 0; _ < u; _++)\n f[b * u + _] += r[k * u + _];\n }\n if (s)\n for (let w = 0; w < u; w++)\n f[b * u + w] /= g - h;\n if (h = g, ++g, x = b + 1, b = C, g > i)\n break;\n }\n return x < l && f.fill(a, x * u, l * u), [f, m];\n}\nvar LT = vr((r) => Math.sqrt(r));\nvar sj = we(Hn, (r) => Math.sqrt(r));\nvar BT = { kernelName: Hn, backendName: \"cpu\", kernelFunc: sj };\nvar _S = Be((r, e) => {\n let t10 = r - e;\n return t10 * t10;\n});\nvar aj = Qe(jn, _S);\nvar VT = { kernelName: jn, backendName: \"cpu\", kernelFunc: aj };\nfunction yf(r, e, t10, o) {\n let n = le(r, e.dtype);\n for (let s = 0; s < n.size; s++) {\n let a = n.indexToLoc(s), i = new Array(a.length);\n for (let p = 0; p < i.length; p++)\n i[p] = a[p] * t10[p] + o[p];\n n.set(e.get(...i), ...a);\n }\n return n;\n}\nvar $S = class {\n constructor(e, t10, o, n, s, a) {\n this.separator = y.encodeString(e), this.nGramWidths = t10, this.leftPad = y.encodeString(o), this.rightPad = y.encodeString(n), this.padWidth = s, this.preserveShort = a;\n }\n getPadWidth(e) {\n return Math.min(this.padWidth < 0 ? e - 1 : this.padWidth, e - 1);\n }\n getNumNGrams(e, t10) {\n let o = this.getPadWidth(t10);\n return Math.max(0, e + 2 * o - t10 + 1);\n }\n createNGrams(e, t10, o, n, s, a) {\n for (let i = 0; i < s; ++i) {\n let p = this.getPadWidth(a), u = Math.max(0, p - i), c = Math.max(0, p - (s - (i + 1))), l = a - (u + c), m = t10 + (u > 0 ? 0 : i - p), d = 0;\n d += u * this.leftPad.length;\n for (let b = 0; b < l; ++b)\n d += e[m + b].length;\n d += c * this.rightPad.length;\n let f = u + c + l - 1;\n d += f * this.separator.length, o[n + i] = new Uint8Array(d);\n let h = o[n + i], g = 0, x = (b) => b.forEach((C) => h[g++] = C);\n for (let b = 0; b < u; ++b)\n x(this.leftPad), x(this.separator);\n for (let b = 0; b < l - 1; ++b)\n x(e[m + b]), x(this.separator);\n if (l > 0) {\n x(e[m + l - 1]);\n for (let b = 0; b < c; ++b)\n x(this.separator), x(this.rightPad);\n } else {\n for (let b = 0; b < c - 1; ++b)\n x(this.rightPad), x(this.separator);\n x(this.rightPad);\n }\n }\n }\n compute(e, t10) {\n let o = e.length, n = t10.length;\n if (n > 0) {\n let p = t10[0];\n if (p !== 0)\n throw new Error(`First split value must be 0, got ${p}`);\n for (let u = 1; u < n; ++u) {\n let c = t10[u] >= p;\n if (c = c && t10[u] <= o, !c)\n throw new Error(`Invalid split value ${t10[u]}, must be in [${p}, ${o}]`);\n p = t10[u];\n }\n if (p !== o)\n throw new Error(`Last split value must be data size. Expected ${o}, got ${p}`);\n }\n let s = n - 1, a = y.getArrayFromDType(\"int32\", n);\n if (o === 0 || n === 0) {\n let p = new Array(o);\n for (let u = 0; u <= s; ++u)\n a[u] = 0;\n return [p, a];\n }\n a[0] = 0;\n for (let p = 1; p <= s; ++p) {\n let u = t10[p] - t10[p - 1], c = 0;\n this.nGramWidths.forEach((l) => {\n c += this.getNumNGrams(u, l);\n }), this.preserveShort && u > 0 && c === 0 && (c = 1), a[p] = a[p - 1] + c;\n }\n let i = new Array(a[s]);\n for (let p = 0; p < s; ++p) {\n let u = t10[p], c = a[p];\n if (this.nGramWidths.forEach((l) => {\n let m = t10[p + 1] - t10[p], d = this.getNumNGrams(m, l);\n this.createNGrams(e, u, i, c, d, l), c += d;\n }), this.preserveShort && c === a[p]) {\n let l = t10[p + 1] - t10[p];\n if (l === 0)\n continue;\n let m = l + 2 * this.padWidth, d = 1;\n this.createNGrams(e, u, i, c, d, m);\n }\n }\n return [i, a];\n }\n};\nfunction Eu(r, e, t10, o, n, s, a, i) {\n return new $S(t10, o, n, s, a, i).compute(r, e);\n}\nfunction ij(r, e, t10, o) {\n if (!r.length)\n return;\n if (e.length === 0) {\n for (let s = 0; s < r.length; ++s)\n o.push(r.subarray(s, s + 1));\n return;\n }\n if (e.length === 1) {\n let s = e[0], a = r.indexOf(s);\n for (; a !== -1; ) {\n let i = r.subarray(0, a);\n (!t10 || i.length !== 0) && o.push(i), r = r.subarray(a + 1), a = r.indexOf(s);\n }\n (!t10 || r.length !== 0) && o.push(r);\n return;\n }\n let n = 0;\n for (let s = 0; s < r.length + 1; s++)\n if (s === r.length || e.indexOf(r[s]) !== -1) {\n let a = r.subarray(n, s);\n (!t10 || a.length !== 0) && o.push(a), n = s + 1;\n }\n}\nfunction Au(r, e, t10) {\n let o = r.length, n = [], s = 0, a = 0, i = new Array(o);\n for (let m = 0; m < o; ++m) {\n let d = n.length;\n ij(r[m], e, t10, n);\n let f = n.length - d;\n i[m] = f, s += f, a = Math.max(a, f);\n }\n let p = y.getArrayFromDType(\"int32\", s * 2), u = new Array(s), c = [o, a], l = 0;\n for (let m = 0; m < o; ++m)\n for (let d = 0; d < i[m]; ++d)\n p[l * 2] = m, p[l * 2 + 1] = d, u[l] = n[l], ++l;\n return [p, u, c];\n}\nfunction Ru(r, e) {\n let t10 = y.getArrayFromDType(\"int32\", r.length);\n for (let o = 0; o < r.length; ++o)\n t10[o] = y.fingerPrint64(r[o]).modulo(e).getLowBitsUnsigned();\n return t10;\n}\nvar ES = Be((r, e) => r - e);\nvar uj = qp((r, e, t10, o) => ({ real: r - t10, imag: e - o }));\nvar gl = Qe(Yn, ES, uj);\nvar zT = { kernelName: Yn, backendName: \"cpu\", kernelFunc: gl };\nfunction bf(r, e) {\n let t10 = new Array(r.rank);\n for (let n = 0; n < t10.length; n++)\n t10[n] = r.shape[n] * e[n];\n let o = le(t10, r.dtype);\n for (let n = 0; n < o.values.length; ++n) {\n let s = o.indexToLoc(n), a = new Array(r.rank);\n for (let p = 0; p < a.length; p++)\n a[p] = s[p] % r.shape[p];\n let i = r.locToIndex(a);\n o.values[n] = r.values[i];\n }\n return o;\n}\nvar xl = (r, e) => {\n let t10 = e.value - r.value;\n return t10 === 0 ? r.index - e.index : t10;\n};\nfunction WT(r, e, t10 = 0, o = r.length - 1) {\n for (; o > t10; ) {\n if (o - t10 > 600) {\n let i = o - t10 + 1, p = e - t10 + 1, u = Math.log(i), c = 0.5 * Math.exp(2 * u / 3), l = 0.5 * Math.sqrt(u * c * (i - c) / i) * Math.sign(p - i / 2), m = Math.max(t10, Math.floor(e - p * c / i + l)), d = Math.min(o, Math.floor(e + (i - p) * c / i + l));\n WT(r, e, m, d);\n }\n let n = r[e], s = t10, a = o;\n for (y.swap(r, t10, e), xl(r[o], n) > 0 && y.swap(r, t10, o); s < a; ) {\n for (y.swap(r, s, a), s++, a--; xl(r[s], n) < 0; )\n s = s + 1;\n for (; xl(r[a], n) > 0; )\n a = a - 1;\n }\n xl(r[t10], n) === 0 ? y.swap(r, t10, a) : (a = a + 1, y.swap(r, a, o)), a <= e && (t10 = a + 1), e <= a && (o = a - 1);\n }\n}\nfunction Cf(r, e, t10, o, n) {\n let s = e[e.length - 1], [a, i] = [r.length / s, s], p = y.getTypedArrayFromDType(t10, a * o), u = y.getTypedArrayFromDType(\"int32\", a * o);\n for (let l = 0; l < a; l++) {\n let m = l * i, d = r.subarray(m, m + i), f = new Array(d.length);\n d.forEach((b, C) => f[C] = { value: b, index: C }), o < f.length && (WT(f, o), f = f.slice(0, o)), n && f.sort(xl);\n let h = l * o, g = p.subarray(h, h + o), x = u.subarray(h, h + o);\n for (let b = 0; b < o; b++)\n g[b] = f[b].value, x[b] = f[b].index;\n }\n let c = e.slice();\n return c[c.length - 1] = o, [le(c, t10, p), le(c, \"int32\", u)];\n}\nfunction Sf(r, e, t10, o) {\n let n = y.parseAxisParam(e, t10)[0], s = [1, t10[0], 1];\n for (let f = 0; f < n; f++)\n s[0] *= t10[f];\n s[1] = t10[n];\n for (let f = n + 1; f < t10.length; f++)\n s[2] *= t10[f];\n let a = {}, i = new Int32Array(t10[n]), p = new st(s, o, r), u = [], c = s[0] === 1 && s[2] === 1;\n for (let f = 0; f < t10[n]; f++) {\n let h;\n if (c)\n h = r[f].toString();\n else {\n let g = [];\n for (let x = 0; x < s[0]; x++)\n for (let b = 0; b < s[2]; b++)\n g.push(p.get(x, f, b));\n h = g.join(\",\");\n }\n if (a[h] !== void 0)\n i[f] = a[h];\n else {\n let g = Object.keys(a).length;\n a[h] = g, i[f] = g, u.push(f);\n }\n }\n let l = s.slice();\n l[1] = Object.keys(a).length;\n let m = new st(l, o);\n u.forEach((f, h) => {\n for (let g = 0; g < s[0]; g++)\n for (let x = 0; x < s[2]; x++)\n m.set(p.get(g, f, x), g, h, x);\n });\n let d = t10.slice();\n return d[n] = l[1], { outputValues: m.values, outputShape: d, indices: i };\n}\nvar pj = \"4.2.0\";\nTi(\"cpu\", () => new Pi(), 1);\nvar AS = we(Jo, (r) => r >= 0 ? r : Math.exp(r) - 1);\nvar UT = { kernelName: Jo, backendName: \"cpu\", kernelFunc: AS };\nfunction RS(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { alpha: s } = o;\n j([n], \"leakyRelu\");\n let a = y.sizeFromShape(n.shape), i = t10.data.get(n.dataId).values, p = y.getTypedArrayFromDType(\"float32\", a);\n for (let u = 0; u < i.length; u++)\n p[u] = i[u] < 0 ? s * i[u] : i[u];\n return t10.makeTensorInfo(n.shape, \"float32\", p);\n}\nvar GT = { kernelName: ln, backendName: \"cpu\", kernelFunc: RS };\nvar cj = Be((r, e) => r < 0 ? e * r : r);\nfunction DS(r) {\n let { inputs: e, backend: t10 } = r, { x: o, alpha: n } = e;\n j([o, n], \"prelu\");\n let s = t10.data.get(o.dataId).values, a = t10.data.get(n.dataId).values, [i, p] = cj(o.shape, n.shape, s, a, \"float32\");\n return t10.makeTensorInfo(p, \"float32\", i);\n}\nvar HT = { kernelName: Rn, backendName: \"cpu\", kernelFunc: DS };\nvar FS = we(On, (r) => Math.max(0, r));\nvar KT = { kernelName: On, backendName: \"cpu\", kernelFunc: FS };\nvar OS = we(Ln, (r) => Math.min(Math.max(0, r), 6));\nvar qT = { kernelName: Ln, backendName: \"cpu\", kernelFunc: OS };\nfunction Du(r, e, t10, o, n) {\n if (t10 === \"linear\")\n return ir({ inputs: { x: e }, backend: r });\n if (t10 === \"relu\")\n return FS({ inputs: { x: e }, backend: r });\n if (t10 === \"elu\")\n return AS({ inputs: { x: e }, backend: r });\n if (t10 === \"relu6\")\n return OS({ inputs: { x: e }, backend: r });\n if (t10 === \"prelu\")\n return DS({ inputs: { x: e, alpha: o }, backend: r });\n if (t10 === \"leakyrelu\")\n return RS({ inputs: { x: e }, backend: r, attrs: { alpha: n } });\n if (t10 === \"sigmoid\")\n return TS({ inputs: { x: e }, backend: r });\n throw new Error(`Activation ${t10} has not been implemented for the CPU backend.`);\n}\nfunction Le(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { shape: s } = o, a = y.sizeFromShape(n.shape), i = y.inferFromImplicitShape(s, a), p = y.sizeFromShape(i);\n y.assert(a === p, () => `The new shape (${i}) has ${p} elements and the old shape (${n.shape}) has ${a} elements. The new shape and old shape must have the same number of elements.`), t10.incRef(n.dataId);\n let u = t10.data.get(n.dataId);\n if (u.complexTensorInfos != null) {\n let c = u.complexTensorInfos.real, l = u.complexTensorInfos.imag;\n c.shape = i, l.shape = i;\n }\n return { dataId: n.dataId, shape: i, dtype: n.dtype };\n}\nvar jT = { kernelName: _s, backendName: \"cpu\", kernelFunc: Le };\nfunction PS(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { a: n, b: s } = e, { transposeA: a, transposeB: i } = o;\n j([n, s], \"matMul\");\n let p = n.shape.length, u = s.shape.length, c = a ? n.shape[p - 2] : n.shape[p - 1], l = i ? s.shape[u - 1] : s.shape[u - 2], m = a ? n.shape[p - 1] : n.shape[p - 2], d = i ? s.shape[u - 2] : s.shape[u - 1], f = n.shape.slice(0, -2), h = s.shape.slice(0, -2), g = y.sizeFromShape(f), x = y.sizeFromShape(h), C = yr.assertAndGetBroadcastShape(n.shape.slice(0, -2), s.shape.slice(0, -2)).concat([m, d]);\n y.assert(c === l, () => `Error in matMul: inner shapes (${c}) and (${l}) of Tensors with shapes ${n.shape} and ${s.shape} and transposeA=${a} and transposeB=${i} must match.`);\n let w = a ? [g, c, m] : [g, m, c], k = i ? [x, d, l] : [x, l, d], _ = Le({ inputs: { x: n }, backend: t10, attrs: { shape: w } }), E = Le({ inputs: { x: s }, backend: t10, attrs: { shape: k } }), A = a ? _.shape[1] : _.shape[2], R = a ? _.shape[2] : _.shape[1], D = i ? E.shape[1] : E.shape[2], P = Math.max(g, x), M = t10.data.get(_.dataId).values, L = t10.data.get(E.dataId).values, V = y.computeStrides(_.shape), z = y.computeStrides(E.shape), [U, K, H] = a ? [V[0], 1, V[1]] : [V[0], V[1], 1], [q, Z, ee] = i ? [1, z[1], z[0]] : [z[1], 1, z[0]], oe = R * D, J = le([P, R, D], _.dtype), te = J.values, ie = t10.blockSize;\n for (let ce = 0; ce < P; ce++) {\n let ye = ce % g, Ne = ce % x;\n for (let Ie = 0; Ie < R; Ie += ie) {\n let Ae = Math.min(Ie + ie, R);\n for (let Re = 0; Re < D; Re += ie) {\n let ot = Math.min(Re + ie, D);\n for (let pt = 0; pt < A; pt += ie) {\n let ze = Math.min(pt + ie, A);\n for (let ct = Ie; ct < Ae; ct++)\n for (let at = Re; at < ot; at++) {\n let ft = 0;\n for (let ht = pt; ht < ze; ht++) {\n let Rr = M[ye * U + ct * K + ht * H], Pt = L[ht * q + at * Z + Ne * ee];\n ft += Rr * Pt;\n }\n te[ce * oe + (ct * D + at)] += ft;\n }\n }\n }\n }\n }\n return t10.disposeIntermediateTensorInfo(_), t10.disposeIntermediateTensorInfo(E), t10.makeTensorInfo(C, J.dtype, J.values);\n}\nvar XT = { kernelName: zo, backendName: \"cpu\", kernelFunc: PS };\nfunction lj(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { a: n, b: s, bias: a, preluActivationWeights: i } = e, { transposeA: p, transposeB: u, activation: c, leakyreluAlpha: l } = o, m, d, f, h = [];\n m = PS({ inputs: { a: n, b: s }, attrs: { transposeA: p, transposeB: u }, backend: t10 }), a && (d = Xs({ inputs: { a: m, b: a }, backend: t10 }), h.push(m), m = d), c && (f = Du(t10, m, c, i, l), h.push(m), m = f);\n for (let x of h)\n t10.disposeIntermediateTensorInfo(x);\n return m;\n}\nvar YT = { kernelName: ho, backendName: \"cpu\", kernelFunc: lj };\nvar mj = we(aa, (r) => Math.acos(r));\nvar QT = { kernelName: aa, backendName: \"cpu\", kernelFunc: mj };\nvar dj = we(ia, (r) => Math.acosh(r));\nvar ZT = { kernelName: ia, backendName: \"cpu\", kernelFunc: dj };\nfunction fj(r) {\n let { inputs: e, backend: t10 } = r, o = e;\n j(e, \"addN\");\n let n = o.map((i) => t10.data.get(i.dataId).values), s = le(o[0].shape, o[0].dtype), a = s.values;\n for (let i = 0; i < o.length; i++) {\n let p = n[i];\n for (let u = 0; u < a.length; u++)\n a[u] += p[u];\n }\n return t10.makeTensorInfo(s.shape, s.dtype, s.values);\n}\nvar JT = { kernelName: Po, backendName: \"cpu\", kernelFunc: fj };\nfunction hj(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s, keepDims: a } = o;\n j(n, \"all\");\n let i = y.parseAxisParam(s, n.shape), p = i, u = S.getAxesPermutation(p, n.shape.length), c = n;\n u != null && (c = St({ inputs: { x: n }, backend: t10, attrs: { perm: u } }), p = S.getInnerMostAxes(p.length, n.shape.length)), S.assertAxesAreInnerMostDims(\"all\", p, c.shape.length);\n let [l, m] = S.computeOutAndReduceShapes(c.shape, p), d = y.sizeFromShape(m), f = y.makeZerosTypedArray(y.sizeFromShape(l), c.dtype), h = t10.data.get(c.dataId).values;\n for (let x = 0; x < f.length; ++x) {\n let b = x * d, C = h[b];\n for (let w = 0; w < d; ++w) {\n let k = h[b + w];\n C = C && k;\n }\n f[x] = C;\n }\n u != null && t10.disposeIntermediateTensorInfo(c);\n let g = t10.makeTensorInfo(l, c.dtype, f);\n if (a) {\n let x = S.expandShapeToKeepDim(l, i), b = Le({ inputs: { x: g }, backend: t10, attrs: { shape: x } });\n return t10.disposeIntermediateTensorInfo(g), b;\n }\n return g;\n}\nvar e2 = { kernelName: Mo, backendName: \"cpu\", kernelFunc: hj };\nfunction gj(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s, keepDims: a } = o;\n j(n, \"any\");\n let i = y.parseAxisParam(s, n.shape), p = i, u = S.getAxesPermutation(p, n.shape.length), c = n;\n u != null && (c = St({ inputs: { x: n }, backend: t10, attrs: { perm: u } }), p = S.getInnerMostAxes(p.length, n.shape.length)), S.assertAxesAreInnerMostDims(\"any\", p, c.shape.length);\n let [l, m] = S.computeOutAndReduceShapes(c.shape, p), d = y.sizeFromShape(m), f = y.makeZerosTypedArray(y.sizeFromShape(l), c.dtype), h = t10.data.get(c.dataId).values;\n for (let x = 0; x < f.length; ++x) {\n let b = x * d, C = h[b];\n for (let w = 0; w < d; ++w) {\n let k = h[b + w];\n C = C || k;\n }\n f[x] = C;\n }\n u != null && t10.disposeIntermediateTensorInfo(c);\n let g = t10.makeTensorInfo(l, c.dtype, f);\n if (a) {\n let x = S.expandShapeToKeepDim(l, i), b = Le({ inputs: { x: g }, backend: t10, attrs: { shape: x } });\n return t10.disposeIntermediateTensorInfo(g), b;\n }\n return g;\n}\nvar t2 = { kernelName: Lo, backendName: \"cpu\", kernelFunc: gj };\nfunction xj(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s } = o;\n j(n, \"argMax\");\n let a = y.parseAxisParam(s, n.shape), i = S.getAxesPermutation(a, n.shape.length), p = n, u = [];\n i != null && (p = St({ inputs: { x: n }, backend: t10, attrs: { perm: i } }), u.push(p), a = S.getInnerMostAxes(a.length, p.shape.length)), a = [a[0]], S.assertAxesAreInnerMostDims(\"argMax\", a, p.shape.length);\n let [c, l] = S.computeOutAndReduceShapes(p.shape, a), m = y.sizeFromShape(c), d = y.makeZerosTypedArray(m, \"int32\"), f = y.sizeFromShape(l), h = t10.data.get(p.dataId).values;\n for (let g = 0; g < d.length; ++g) {\n let x = g * f, b = h[x], C = 0;\n for (let w = 0; w < f; ++w) {\n let k = h[x + w];\n k > b && (b = k, C = w);\n }\n d[g] = C;\n }\n return u.forEach((g) => t10.disposeIntermediateTensorInfo(g)), t10.makeTensorInfo(c, \"int32\", d);\n}\nvar r2 = { kernelName: Bo, backendName: \"cpu\", kernelFunc: xj };\nfunction yj(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s } = o;\n j(n, \"argMin\");\n let a = y.parseAxisParam(s, n.shape), i = S.getAxesPermutation(a, n.shape.length), p = n, u = [];\n i != null && (p = St({ inputs: { x: n }, backend: t10, attrs: { perm: i } }), u.push(p), a = S.getInnerMostAxes(a.length, p.shape.length)), a = [a[0]], S.assertAxesAreInnerMostDims(\"argMin\", a, p.shape.length);\n let [c, l] = S.computeOutAndReduceShapes(p.shape, a), m = y.sizeFromShape(c), d = y.makeZerosTypedArray(m, \"int32\"), f = y.sizeFromShape(l), h = t10.data.get(p.dataId).values;\n for (let g = 0; g < d.length; ++g) {\n let x = g * f, b = h[x], C = 0;\n for (let w = 0; w < f; ++w) {\n let k = h[x + w];\n k < b && (b = k, C = w);\n }\n d[g] = C;\n }\n return u.forEach((g) => t10.disposeIntermediateTensorInfo(g)), t10.makeTensorInfo(c, \"int32\", d);\n}\nvar o2 = { kernelName: ei, backendName: \"cpu\", kernelFunc: yj };\nvar bj = we(ua, (r) => Math.asin(r));\nvar n2 = { kernelName: ua, backendName: \"cpu\", kernelFunc: bj };\nvar Cj = we(pa, (r) => Math.asinh(r));\nvar s2 = { kernelName: pa, backendName: \"cpu\", kernelFunc: Cj };\nvar Sj = we(ca, (r) => Math.atan(r));\nvar a2 = { kernelName: ca, backendName: \"cpu\", kernelFunc: Sj };\nvar wj = Be((r, e) => Math.atan2(r, e));\nvar Ij = Qe(ma, wj);\nvar i2 = { kernelName: ma, backendName: \"cpu\", kernelFunc: Ij };\nvar vj = we(la, (r) => Math.atanh(r));\nvar u2 = { kernelName: la, backendName: \"cpu\", kernelFunc: vj };\nfunction Jp(r, e, t10, o, n, s) {\n let a = n.strideHeight, i = n.strideWidth, p = n.dilationHeight, u = n.dilationWidth, c = n.effectiveFilterHeight, l = n.effectiveFilterWidth, m = n.padInfo.top, d = n.padInfo.left, f = s === \"max\" ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY, h = le(n.outShape, t10), g = h.values, x = n.outShape[1] * n.outShape[2] * n.outShape[3], b = n.outShape[2] * n.outShape[3], C = n.outShape[3];\n for (let w = 0; w < n.batchSize; ++w) {\n let k = w * x, _ = w * o[0];\n for (let E = 0; E < n.inChannels; ++E)\n for (let A = 0; A < n.outHeight; ++A) {\n let R = A * a - m, D = Math.max(0, R), P = Math.min(n.inHeight, c + R), M = k + A * b;\n for (let L = 0; L < n.outWidth; ++L) {\n let V = L * i - d, z = Math.max(0, V), U = Math.min(n.inWidth, l + V), K = f, H = 0, q = 0;\n for (let ee = D; ee < P; ee += p) {\n let oe = _ + ee * o[1];\n for (let J = z; J < U; J += u) {\n let te = oe + J * o[2], ie = r[te + E];\n s === \"max\" && ie > K ? K = ie : s === \"avg\" && (H += ie, q++);\n }\n if (isNaN(K))\n break;\n }\n let Z = M + L * C + E;\n g[Z] = s === \"avg\" ? H / q : K;\n }\n }\n }\n return h;\n}\nfunction wf(r, e, t10, o, n = false, s = false) {\n let a = le(o.outShape, \"int32\"), i = o.strideHeight, p = o.strideWidth, u = o.dilationHeight, c = o.dilationWidth, l = o.effectiveFilterHeight, m = o.effectiveFilterWidth, d = o.padInfo.top, f = o.padInfo.left, h = le(e, t10, r);\n for (let g = 0; g < o.batchSize; ++g)\n for (let x = 0; x < o.inChannels; ++x)\n for (let b = 0; b < o.outHeight; ++b) {\n let C = b * i - d, w = C;\n for (; w < 0; )\n w += u;\n let k = Math.min(o.inHeight, l + C);\n for (let _ = 0; _ < o.outWidth; ++_) {\n let E = _ * p - f, A = E;\n for (; A < 0; )\n A += c;\n let R = Math.min(o.inWidth, m + E), D = Number.NEGATIVE_INFINITY, P = -1;\n for (let M = w; M < k; M += u) {\n let L = M - C;\n for (let V = A; V < R; V += c) {\n let z = V - E, U = h.get(g, M, V, x);\n U > D && (D = U, n ? P = s ? ((g * o.inHeight + M) * o.inWidth + V) * o.inChannels + x : (M * o.inWidth + V) * o.inChannels + x : P = L * m + z);\n }\n }\n a.set(P, g, b, _, x);\n }\n }\n return a;\n}\nfunction If(r, e, t10, o, n, s) {\n let a = n.strideDepth, i = n.strideHeight, p = n.strideWidth, u = n.dilationDepth, c = n.dilationHeight, l = n.dilationWidth, m = n.effectiveFilterDepth, d = n.effectiveFilterHeight, f = n.effectiveFilterWidth, h = n.padInfo.front, g = n.padInfo.top, x = n.padInfo.left, b = s === \"max\" ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY, C = le(n.outShape, t10), w = C.values, k = n.outShape[1] * n.outShape[2] * n.outShape[3] * n.outShape[4], _ = n.outShape[2] * n.outShape[3] * n.outShape[4], E = n.outShape[3] * n.outShape[4], A = n.outShape[4];\n for (let R = 0; R < n.batchSize; ++R) {\n let D = R * k, P = R * o[0];\n for (let M = 0; M < n.inChannels; ++M)\n for (let L = 0; L < n.outDepth; ++L) {\n let V = L * a - h, z = V;\n for (; z < 0; )\n z += u;\n let U = Math.min(n.inDepth, m + V), K = D + L * _;\n for (let H = 0; H < n.outHeight; ++H) {\n let q = H * i - g, Z = q;\n for (; Z < 0; )\n Z += c;\n let ee = Math.min(n.inHeight, d + q), oe = K + H * E;\n for (let J = 0; J < n.outWidth; ++J) {\n let te = J * p - x, ie = te;\n for (; ie < 0; )\n ie += l;\n let ce = Math.min(n.inWidth, f + te), ye = oe + J * A, Ne = b, Ie = 0, Ae = 0;\n for (let ot = z; ot < U; ot += u) {\n let pt = P + ot * o[1];\n for (let ze = Z; ze < ee; ze += c) {\n let ct = pt + ze * o[2];\n for (let at = ie; at < ce; at += l) {\n let ft = ct + at * o[3], ht = r[ft + M];\n if (s === \"max\" && ht > Ne ? Ne = ht : s === \"avg\" && (Ie += ht, Ae++), isNaN(Ne))\n break;\n }\n if (isNaN(Ne))\n break;\n }\n if (isNaN(Ne))\n break;\n }\n let Re = ye + M;\n w[Re] = s === \"avg\" ? Ie / Math.max(Ae, 1) : Ne;\n }\n }\n }\n }\n return C;\n}\nfunction p2(r, e) {\n let t10 = le(e.outShape, \"int32\"), o = e.strideDepth, n = e.strideHeight, s = e.strideWidth, a = e.dilationDepth, i = e.dilationHeight, p = e.dilationWidth, u = e.effectiveFilterDepth, c = e.effectiveFilterHeight, l = e.effectiveFilterWidth, m = e.padInfo.front, d = e.padInfo.top, f = e.padInfo.left;\n for (let h = 0; h < e.batchSize; ++h)\n for (let g = 0; g < e.inChannels; ++g)\n for (let x = 0; x < e.outDepth; ++x) {\n let b = x * o - m, C = b;\n for (; C < 0; )\n C += a;\n let w = Math.min(e.inDepth, u + b);\n for (let k = 0; k < e.outHeight; ++k) {\n let _ = k * n - d, E = _;\n for (; E < 0; )\n E += i;\n let A = Math.min(e.inHeight, c + _);\n for (let R = 0; R < e.outWidth; ++R) {\n let D = R * s - f, P = D;\n for (; P < 0; )\n P += p;\n let M = Math.min(e.inWidth, l + D), L = Number.NEGATIVE_INFINITY, V = -1;\n for (let z = C; z < w; z += a) {\n let U = z - b;\n for (let K = E; K < A; K += i) {\n let H = K - _;\n for (let q = P; q < M; q += p) {\n let Z = q - D, ee = r.get(h, z, K, q, g);\n ee >= L && (L = ee, V = U * c * l + H * c + Z);\n }\n }\n }\n t10.set(V, h, x, k, R, g);\n }\n }\n }\n return t10;\n}\nfunction kj(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e;\n j(n, \"avgPool\");\n let { filterSize: s, strides: a, pad: i, dimRoundingMode: p } = o, u = 1;\n y.assert(S.eitherStridesOrDilationsAreOne(a, u), () => `Error in avgPool: Either strides or dilations must be 1. Got strides ${a} and dilations '${u}'`);\n let c = S.computePool2DInfo(n.shape, s, a, u, i, p), l;\n if (c.filterWidth === 1 && c.filterHeight === 1 && y.arraysEqual(c.inShape, c.outShape))\n l = ir({ inputs: { x: n }, backend: t10 });\n else {\n let m = t10.data.get(n.dataId).values, d = y.computeStrides(n.shape), f = Jp(m, n.shape, n.dtype, d, c, \"avg\");\n l = t10.makeTensorInfo(c.outShape, n.dtype, f.values);\n }\n return l;\n}\nvar c2 = { kernelName: Vo, backendName: \"cpu\", kernelFunc: kj };\nfunction Nj(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { filterSize: s, strides: a, pad: i, dimRoundingMode: p, dataFormat: u } = o;\n j(n, \"avgPool3d\");\n let c = S.computePool3DInfo(n.shape, s, a, 1, i, p, u), l = t10.data.get(n.dataId).values, m = If(l, n.shape, n.dtype, y.computeStrides(n.shape), c, \"avg\");\n return t10.makeTensorInfo(m.shape, \"float32\", m.values);\n}\nvar l2 = { kernelName: dp, backendName: \"cpu\", kernelFunc: Nj };\nfunction Tj(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { dy: n, input: s } = e, { filterSize: a, strides: i, pad: p, dimRoundingMode: u } = o;\n j([n, s], \"avgPool3DGrad\");\n let c = S.computePool3DInfo(s.shape, a, i, 1, p, u), l = c.strideDepth, m = c.strideHeight, d = c.strideWidth, f = c.filterDepth, h = c.filterHeight, g = c.filterWidth, x = c.dilationDepth, b = c.dilationHeight, C = c.dilationWidth, w = c.effectiveFilterDepth, k = c.effectiveFilterHeight, _ = c.effectiveFilterWidth, E = w - 1 - c.padInfo.front, A = _ - 1 - c.padInfo.left, R = k - 1 - c.padInfo.top, D = le(s.shape, \"float32\"), P = 1 / (f * h * g), M = t10.bufferSync(n);\n for (let L = 0; L < c.batchSize; ++L)\n for (let V = 0; V < c.inChannels; ++V)\n for (let z = 0; z < c.inDepth; ++z)\n for (let U = 0; U < c.inHeight; ++U)\n for (let K = 0; K < c.inWidth; ++K) {\n let H = z - E, q = U - R, Z = K - A, ee = 0;\n for (let oe = 0; oe < w; oe += x) {\n let J = (H + oe) / l;\n if (!(J < 0 || J >= c.outDepth || Math.floor(J) !== J))\n for (let te = 0; te < k; te += b) {\n let ie = (q + te) / m;\n if (!(ie < 0 || ie >= c.outHeight || Math.floor(ie) !== ie))\n for (let ce = 0; ce < _; ce += C) {\n let ye = (Z + ce) / d;\n if (ye < 0 || ye >= c.outWidth || Math.floor(ye) !== ye)\n continue;\n let Ne = M.get(L, J, ie, ye, V);\n ee += Ne;\n }\n }\n }\n D.set(ee * P, L, z, U, K, V);\n }\n return t10.makeTensorInfo(D.shape, D.dtype, D.values);\n}\nvar m2 = { kernelName: vm, backendName: \"cpu\", kernelFunc: Tj };\nfunction _j(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { dy: n, input: s } = e, a = s;\n j([n, s], \"avgPoolGrad\");\n let { filterSize: i, strides: p, pad: u } = o, c = S.computePool2DInfo(a.shape, i, p, 1, u), l = c.strideHeight, m = c.strideWidth, d = c.filterHeight, f = c.filterWidth, h = c.dilationHeight, g = c.dilationWidth, x = c.effectiveFilterHeight, b = c.effectiveFilterWidth, C = b - 1 - c.padInfo.left, w = x - 1 - c.padInfo.top, k = le(a.shape, \"float32\"), _ = 1 / (d * f), E = t10.data.get(n.dataId).values, A = le(n.shape, \"float32\", E);\n for (let R = 0; R < c.batchSize; ++R)\n for (let D = 0; D < c.inChannels; ++D)\n for (let P = 0; P < c.inHeight; ++P)\n for (let M = 0; M < c.inWidth; ++M) {\n let L = P - w, V = M - C, z = 0;\n for (let U = 0; U < x; U += h) {\n let K = (L + U) / l;\n if (!(K < 0 || K >= c.outHeight || Math.floor(K) !== K))\n for (let H = 0; H < b; H += g) {\n let q = (V + H) / m;\n if (q < 0 || q >= c.outWidth || Math.floor(q) !== q)\n continue;\n let Z = A.get(R, K, q, D);\n z += Z;\n }\n }\n k.set(z * _, R, P, M, D);\n }\n return t10.makeTensorInfo(k.shape, k.dtype, k.values);\n}\nvar d2 = { kernelName: mp, backendName: \"cpu\", kernelFunc: _j };\nfunction $j(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, scale: s, offset: a, mean: i, variance: p } = e;\n y.assert(i.shape.length === p.shape.length, () => \"Batch normalization gradient requires mean and variance to have equal ranks.\"), y.assert(a == null || i.shape.length === a.shape.length, () => \"Batch normalization gradient requires mean and offset to have equal ranks.\"), y.assert(s == null || i.shape.length === s.shape.length, () => \"Batch normalization gradient requires mean and scale to have equal ranks.\"), j([n, i, p, s, a], \"batchNorm\");\n let { varianceEpsilon: u } = o;\n u == null && (u = 1e-3);\n let c = t10.data.get(n.dataId).values, l = t10.data.get(i.dataId).values, m = t10.data.get(p.dataId).values, d = s ? t10.data.get(s.dataId).values : new Float32Array([1]), f = a ? t10.data.get(a.dataId).values : new Float32Array([0]), h = new Float32Array(c.length), g = f.length, x = d.length, b = m.length, C = l.length, w = 0, k = 0, _ = 0, E = 0;\n for (let A = 0; A < c.length; ++A)\n h[A] = f[w++] + (c[A] - l[k++]) * d[_++] / Math.sqrt(m[E++] + u), w >= g && (w = 0), k >= C && (k = 0), _ >= x && (_ = 0), E >= b && (E = 0);\n return t10.makeTensorInfo(n.shape, n.dtype, h);\n}\nvar f2 = { kernelName: sn, backendName: \"cpu\", kernelFunc: $j };\nfunction Ej(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { blockShape: s, crops: a } = o;\n j([n], \"batchToSpaceND\");\n let i = s.reduce((x, b) => x * b), p = S.getReshaped(n.shape, s, i), u = S.getPermuted(p.length, s.length), c = S.getReshapedPermuted(n.shape, s, i), l = S.getSliceBeginCoords(a, s.length), m = S.getSliceSize(c, a, s.length), d = Le({ inputs: { x: n }, backend: t10, attrs: { shape: p } }), f = St({ inputs: { x: d }, backend: t10, attrs: { perm: u } }), h = Le({ inputs: { x: f }, backend: t10, attrs: { shape: c } }), g = To({ inputs: { x: h }, backend: t10, attrs: { begin: l, size: m } });\n return t10.disposeIntermediateTensorInfo(d), t10.disposeIntermediateTensorInfo(f), t10.disposeIntermediateTensorInfo(h), g;\n}\nvar h2 = { kernelName: bs, backendName: \"cpu\", kernelFunc: Ej };\nfunction Aj(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, weights: s } = e, { size: a } = o, i = t10.data.get(n.dataId).values, p = t10.data.get(s.dataId).values, u = jp(i, p, s.dtype, s.shape, a);\n return t10.makeTensorInfo([a], s.dtype, u);\n}\nvar g2 = { kernelName: ti, backendName: \"cpu\", kernelFunc: Aj };\nfunction Rj(r) {\n let { inputs: e, backend: t10 } = r, { s0: o, s1: n } = e, s = t10.data.get(o.dataId).values, a = t10.data.get(n.dataId).values, i = S.assertAndGetBroadcastShape(Array.from(s), Array.from(a));\n return t10.makeTensorInfo([i.length], \"int32\", Int32Array.from(i));\n}\nvar x2 = { kernelName: fp, backendName: \"cpu\", kernelFunc: Rj };\nvar Dj = we(lo, (r, e) => {\n let t10 = e;\n return r > t10.clipValueMax ? t10.clipValueMax : r < t10.clipValueMin ? t10.clipValueMin : r;\n});\nvar y2 = { kernelName: lo, backendName: \"cpu\", kernelFunc: Dj };\nvar Fj = (r) => {\n let { x: e } = r.inputs, t10 = r.backend, o = new Float32Array(y.sizeFromShape(e.shape)), n = t10.data.get(e.dataId), s = n.complexTensorInfos.real, a = n.complexTensorInfos.imag, i = t10.data.get(s.dataId).values, p = t10.data.get(a.dataId).values;\n for (let u = 0; u < i.length; u++) {\n let c = i[u], l = p[u];\n o[u] = Math.hypot(c, l);\n }\n return t10.makeOutput(o, e.shape, \"float32\");\n};\nvar b2 = { kernelName: hp, backendName: \"cpu\", kernelFunc: Fj };\nfunction Ys(r) {\n let { inputs: e, backend: t10 } = r, { input: o } = e, n = t10.data.get(o.dataId).complexTensorInfos.imag, s = t10.data.get(n.dataId).values;\n return t10.makeTensorInfo(n.shape, n.dtype, s);\n}\nvar C2 = { kernelName: ci, backendName: \"cpu\", kernelFunc: Ys };\nfunction Mi(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { axis: n } = o, s = y.parseAxisParam(n, e[0].shape)[0], a = e.map((h) => h.shape);\n S.assertParamsConsistent(a, s);\n let i = S.computeOutShape(e.map((h) => h.shape), s);\n if (y.sizeFromShape(i) === 0)\n return t10.makeTensorInfo(i, e[0].dtype, []);\n let p = e.filter((h) => y.sizeFromShape(h.shape) > 0);\n if (p.length === 1)\n return ir({ inputs: { x: p[0] }, backend: t10 });\n if (p[0].dtype === \"complex64\") {\n let h = p.map((w) => Io({ inputs: { input: w }, backend: t10 })), g = p.map((w) => Ys({ inputs: { input: w }, backend: t10 })), x = Mi({ inputs: h, backend: t10, attrs: { axis: s } }), b = Mi({ inputs: g, backend: t10, attrs: { axis: s } }), C = Ht({ inputs: { real: x, imag: b }, backend: t10 });\n return h.forEach((w) => t10.disposeIntermediateTensorInfo(w)), g.forEach((w) => t10.disposeIntermediateTensorInfo(w)), t10.disposeIntermediateTensorInfo(x), t10.disposeIntermediateTensorInfo(b), C;\n }\n let u = p.map((h) => {\n let x = [-1, y.sizeFromShape(h.shape.slice(s))];\n return Le({ inputs: { x: h }, backend: t10, attrs: { shape: x } });\n }), c = u.map((h) => ({ vals: t10.data.get(h.dataId).values, shape: h.shape }));\n i = S.computeOutShape(u.map((h) => h.shape), 1);\n let l = u[0].shape[0] === 1, m = Nu(c, i, e[0].dtype, l), d = S.computeOutShape(p.map((h) => h.shape), s), f = t10.makeTensorInfo(d, e[0].dtype, m);\n return u.forEach((h) => t10.disposeIntermediateTensorInfo(h)), f;\n}\nvar S2 = { kernelName: Cs, backendName: \"cpu\", kernelFunc: Mi };\nfunction MS(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, filter: s } = e, { strides: a, pad: i, dataFormat: p, dilations: u, dimRoundingMode: c } = o;\n j([n, s], \"conv2d\");\n let l = S.convertConv2DDataFormat(p), m = S.computeConv2DInfo(n.shape, s.shape, a, u, i, c, false, l), d = m.filterHeight, f = m.filterWidth, h = m.dilationHeight, g = m.dilationWidth, x = m.padInfo.left, b = m.padInfo.top, C = m.dataFormat === \"channelsLast\", w = new st(m.outShape, n.dtype), k = y.computeStrides(n.shape), _ = y.computeStrides(s.shape), E = k[0], A = C ? k[1] : k[2], R = C ? k[2] : 1, D = C ? 1 : k[1], P = w.strides[0], M = C ? w.strides[1] : w.strides[2], L = C ? w.strides[2] : 1, V = C ? 1 : w.strides[1], z = t10.data.get(n.dataId).values, U = t10.data.get(s.dataId).values, K = w.values;\n for (let H = 0; H < m.batchSize; ++H) {\n let q = H * E, Z = H * P;\n for (let ee = 0; ee < m.outHeight; ++ee) {\n let oe = Z + ee * M, J = ee * m.strideHeight - b;\n for (let te = 0; te < d; ++te) {\n let ie = J + te * h;\n if (ie < 0 || ie >= m.inHeight)\n continue;\n let ce = te * _[0], ye = q + ie * A;\n for (let Ne = 0; Ne < m.outWidth; ++Ne) {\n let Ie = oe + Ne * L, Ae = Ne * m.strideWidth - x;\n for (let Re = 0; Re < f; ++Re) {\n let ot = Ae + Re * g;\n if (ot < 0 || ot >= m.inWidth)\n continue;\n let pt = ce + Re * _[1], ze = ye + ot * R, ct = pt;\n for (let at = 0; at < m.inChannels; ++at) {\n let ft = z[ze + at * D];\n for (let ht = 0; ht < m.outChannels; ++ht)\n K[Ie + ht * V] += ft * U[ct + ht];\n ct += m.outChannels;\n }\n }\n }\n }\n }\n }\n return t10.makeTensorInfo(w.shape, w.dtype, K);\n}\nvar w2 = { kernelName: Uo, backendName: \"cpu\", kernelFunc: MS };\nfunction Oj(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, dy: s } = e, { strides: a, pad: i, dataFormat: p, dimRoundingMode: u, filterShape: c } = o;\n j([n, s], \"conv2dBackpropFilter\");\n let l = S.convertConv2DDataFormat(p), m = S.computeConv2DInfo(n.shape, c, a, 1, i, u, false, l), { strideHeight: d, strideWidth: f, filterHeight: h, filterWidth: g } = m, x = m.dataFormat === \"channelsLast\", b = new st(m.filterShape, \"float32\"), C = m.padInfo.left, w = m.padInfo.top, k = t10.data.get(n.dataId).values, _ = t10.data.get(s.dataId).values, E = new st(n.shape, n.dtype, k), A = new st(s.shape, s.dtype, _);\n for (let R = 0; R < h; ++R) {\n let D = Math.max(0, Math.ceil((w - R) / d)), P = Math.min(m.outHeight, (m.inHeight + w - R) / d);\n for (let M = 0; M < g; ++M) {\n let L = Math.max(0, Math.ceil((C - M) / f)), V = Math.min(m.outWidth, (m.inWidth + C - M) / f);\n for (let z = 0; z < m.inChannels; ++z)\n for (let U = 0; U < m.outChannels; ++U) {\n let K = 0;\n for (let H = 0; H < m.batchSize; ++H)\n for (let q = D; q < P; ++q) {\n let Z = R + q * d - w;\n for (let ee = L; ee < V; ++ee) {\n let oe = M + ee * f - C;\n x ? K += E.get(H, Z, oe, z) * A.get(H, q, ee, U) : K += E.get(H, z, Z, oe) * A.get(H, U, q, ee);\n }\n }\n b.set(K, R, M, z, U);\n }\n }\n }\n return t10.makeTensorInfo(b.shape, b.dtype, b.values);\n}\nvar I2 = { kernelName: oi, backendName: \"cpu\", kernelFunc: Oj };\nfunction Pj(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { dy: n, filter: s } = e, { inputShape: a, strides: i, pad: p, dataFormat: u, dimRoundingMode: c } = o;\n j([n, s], \"conv2dBackpropInput\");\n let l = y.computeStrides(s.shape), m = y.computeStrides(n.shape), d = S.convertConv2DDataFormat(u), f = S.computeConv2DInfo(a, s.shape, i, 1, p, c, false, d), h = new st(f.inShape, \"float32\"), g = h.values, x = t10.data.get(n.dataId).values, b = t10.data.get(s.dataId).values, [C, w, k] = l, { batchSize: _, filterHeight: E, filterWidth: A, inChannels: R, inHeight: D, inWidth: P, outChannels: M, outHeight: L, outWidth: V, strideHeight: z, strideWidth: U } = f;\n d = f.dataFormat;\n let K = E - 1 - f.padInfo.top, H = A - 1 - f.padInfo.left, q = d === \"channelsLast\", Z = h.strides[0], ee = q ? h.strides[1] : h.strides[2], oe = q ? h.strides[2] : 1, J = q ? 1 : h.strides[1], te = m[0], ie = q ? m[1] : m[2], ce = q ? m[2] : 1, ye = q ? 1 : m[1];\n for (let Ne = 0; Ne < _; ++Ne)\n for (let Ie = 0; Ie < R; ++Ie)\n for (let Ae = 0; Ae < D; ++Ae) {\n let Re = Ae - K, ot = Math.max(0, Math.ceil(Re / z)), pt = Math.min(L, (E + Re) / z);\n for (let ze = 0; ze < P; ++ze) {\n let ct = ze - H, at = Math.max(0, Math.ceil(ct / U)), ft = Math.min(V, (A + ct) / U), ht = 0;\n for (let Pt = ot; Pt < pt; ++Pt) {\n let qr = Pt * z - Re;\n for (let er = at; er < ft; ++er) {\n let Nt = er * U - ct, tr = te * Ne + ie * Pt + ce * er, rr = C * (E - 1 - qr) + w * (A - 1 - Nt) + k * Ie;\n for (let jr = 0; jr < M; ++jr) {\n let Xr = x[tr + ye * jr], cr = b[rr + jr];\n ht += Xr * cr;\n }\n }\n }\n let Rr = Z * Ne + ee * Ae + oe * ze + J * Ie;\n g[Rr] = ht;\n }\n }\n return t10.makeTensorInfo(h.shape, h.dtype, h.values);\n}\nvar v2 = { kernelName: Go, backendName: \"cpu\", kernelFunc: Pj };\nfunction Mj(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, filter: s } = e, { strides: a, pad: i, dilations: p } = o;\n j([n, s], \"conv3d\");\n let u = S.computeConv3DInfo(n.shape, s.shape, a, p, i), { filterDepth: c, filterHeight: l, filterWidth: m, dilationDepth: d, dilationHeight: f, dilationWidth: h, padInfo: g } = u, x = g.front, b = g.left, C = g.top, w = new st(u.outShape, n.dtype), k = t10.data.get(n.dataId).values, _ = t10.data.get(s.dataId).values, E = w.values, A = y.computeStrides(n.shape), R = y.computeStrides(s.shape);\n for (let D = 0; D < u.batchSize; ++D) {\n let P = D * A[0], M = D * w.strides[0];\n for (let L = 0; L < u.outDepth; ++L) {\n let V = M + L * w.strides[1], z = L * u.strideDepth - x;\n for (let U = 0; U < c; ++U) {\n let K = z + U * d;\n if (K < 0 || K >= u.inDepth)\n continue;\n let H = U * R[0], q = P + K * A[1];\n for (let Z = 0; Z < u.outHeight; ++Z) {\n let ee = V + Z * w.strides[2], oe = Z * u.strideHeight - C;\n for (let J = 0; J < l; ++J) {\n let te = oe + J * f;\n if (te < 0 || te >= u.inHeight)\n continue;\n let ie = H + J * R[1], ce = q + te * A[2];\n for (let ye = 0; ye < u.outWidth; ++ye) {\n let Ne = ee + ye * u.outChannels, Ie = ye * u.strideWidth - b;\n for (let Ae = 0; Ae < m; ++Ae) {\n let Re = Ie + Ae * h;\n if (Re < 0 || Re >= u.inWidth)\n continue;\n let ot = ie + Ae * R[2], pt = ce + Re * u.inChannels, ze = ot;\n for (let ct = 0; ct < u.inChannels; ++ct) {\n let at = k[pt + ct];\n for (let ft = 0; ft < u.outChannels; ++ft)\n E[Ne + ft] += at * _[ze + ft];\n ze += u.outChannels;\n }\n }\n }\n }\n }\n }\n }\n }\n return t10.makeTensorInfo(w.shape, w.dtype, w.values);\n}\nvar k2 = { kernelName: gp, backendName: \"cpu\", kernelFunc: Mj };\nfunction Lj(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, dy: s } = e, { strides: a, pad: i, filterShape: p } = o;\n j([n, s], \"conv3dBackpropFilterV2\");\n let u = y.computeStrides(n.shape), c = y.computeStrides(s.shape), l = S.computeConv3DInfo(n.shape, p, a, 1, i), m = l.strideDepth, d = l.strideHeight, f = l.strideWidth, h = l.filterDepth, g = l.filterHeight, x = l.filterWidth, b = new st(l.filterShape, \"float32\"), C = b.values, [w, k, _, E] = b.strides, A = t10.data.get(s.dataId).values, [R, D, P, M] = c, L = t10.data.get(n.dataId).values, [V, z, U, K] = u, H = l.padInfo.front, q = l.padInfo.left, Z = l.padInfo.top;\n for (let ee = 0; ee < h; ++ee) {\n let oe = Math.max(0, Math.ceil((H - ee) / m)), J = Math.min(l.outDepth, (l.inDepth + H - ee) / m), te = ee * w;\n for (let ie = 0; ie < g; ++ie) {\n let ce = Math.max(0, Math.ceil((Z - ie) / d)), ye = Math.min(l.outHeight, (l.inHeight + Z - ie) / d), Ne = ie * k + te;\n for (let Ie = 0; Ie < x; ++Ie) {\n let Ae = Math.max(0, Math.ceil((q - Ie) / f)), Re = Math.min(l.outWidth, (l.inWidth + q - Ie) / f), ot = Ie * _ + Ne;\n for (let pt = 0; pt < l.inChannels; ++pt) {\n let ze = pt * E + ot;\n for (let ct = 0; ct < l.outChannels; ++ct) {\n let at = 0;\n for (let ft = 0; ft < l.batchSize; ++ft) {\n let ht = ft * V, Rr = ft * R;\n for (let Pt = oe; Pt < J; ++Pt) {\n let er = (ee + Pt * m - H) * z + ht, Nt = Pt * D + Rr;\n for (let tr = ce; tr < ye; ++tr) {\n let jr = (ie + tr * d - Z) * U + er, Xr = tr * P + Nt;\n for (let cr = Ae; cr < Re; ++cr) {\n let Do = (Ie + cr * f - q) * K + jr, hs = cr * M + Xr;\n at += L[Do + pt] * A[hs + ct];\n }\n }\n }\n }\n C[ze + ct] = at;\n }\n }\n }\n }\n }\n return t10.makeTensorInfo(b.shape, b.dtype, b.values);\n}\nvar N2 = { kernelName: km, backendName: \"cpu\", kernelFunc: Lj };\nfunction Bj(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { dy: n, filter: s } = e, { pad: a, strides: i, inputShape: p } = o;\n j([n], \"conv3dBackpropInputV2\");\n let u = y.computeStrides(n.shape), c = y.computeStrides(s.shape), l = S.computeConv3DInfo(p, s.shape, i, 1, a), m = new st(l.inShape, \"float32\"), d = m.values, [f, h, g, x] = m.strides, b = t10.data.get(n.dataId).values, [C, w, k, _] = u, E = t10.data.get(s.dataId).values, [A, R, D, P] = c, { batchSize: M, filterDepth: L, filterHeight: V, filterWidth: z, inChannels: U, inDepth: K, inHeight: H, inWidth: q, outChannels: Z, outDepth: ee, outHeight: oe, outWidth: J, strideDepth: te, strideHeight: ie, strideWidth: ce } = l, ye = L - 1 - l.padInfo.front, Ne = V - 1 - l.padInfo.top, Ie = z - 1 - l.padInfo.left;\n for (let Ae = 0; Ae < M; ++Ae)\n for (let Re = 0; Re < U; ++Re)\n for (let ot = 0; ot < K; ++ot) {\n let pt = ot - ye, ze = Math.max(0, Math.ceil(pt / te)), ct = Math.min(ee, (L + pt) / te);\n for (let at = 0; at < H; ++at) {\n let ft = at - Ne, ht = Math.max(0, Math.ceil(ft / ie)), Rr = Math.min(oe, (V + ft) / ie);\n for (let Pt = 0; Pt < q; ++Pt) {\n let qr = Pt - Ie, er = Math.max(0, Math.ceil(qr / ce)), Nt = Math.min(J, (z + qr) / ce), tr = 0;\n for (let rr = ze; rr < ct; ++rr) {\n let jr = rr * te - pt;\n for (let Xr = ht; Xr < Rr; ++Xr) {\n let cr = Xr * ie - ft;\n for (let ea = er; ea < Nt; ++ea) {\n let Do = ea * ce - qr, hs = C * Ae + w * rr + k * Xr + _ * ea, qt = A * (L - 1 - jr) + R * (V - 1 - cr) + D * (z - 1 - Do) + P * Re;\n for (let ta = 0; ta < Z; ++ta) {\n let Dc = b[hs + ta], Fc = E[qt + ta];\n tr += Dc * Fc;\n }\n }\n }\n }\n d[f * Ae + h * ot + g * at + x * Pt + Re] = tr;\n }\n }\n }\n return t10.makeTensorInfo(m.shape, m.dtype, m.values);\n}\nvar T2 = { kernelName: xp, backendName: \"cpu\", kernelFunc: Bj };\nvar Vj = we(Ho, (r) => Math.cos(r));\nvar _2 = { kernelName: Ho, backendName: \"cpu\", kernelFunc: Vj };\nvar zj = we(Ko, (r) => Math.cosh(r));\nvar $2 = { kernelName: Ko, backendName: \"cpu\", kernelFunc: zj };\nfunction Wj(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { image: n, boxes: s, boxInd: a } = e, { cropSize: i, method: p, extrapolationValue: u } = o, [c, l, m, d] = n.shape, f = s.shape[0], [h, g] = i, x = le([f, h, g, d], \"float32\"), b = t10.data.get(s.dataId).values, C = t10.data.get(a.dataId).values, w = t10.data.get(n.dataId).values, k = y.computeStrides(n.shape), _ = y.computeStrides(x.shape);\n for (let E = 0; E < f; E++) {\n let A = E * 4, R = b[A], D = b[A + 1], P = b[A + 2], M = b[A + 3], L = C[E];\n if (L >= c)\n continue;\n let V = h > 1 ? (P - R) * (l - 1) / (h - 1) : 0, z = g > 1 ? (M - D) * (m - 1) / (g - 1) : 0;\n for (let U = 0; U < h; U++) {\n let K = h > 1 ? R * (l - 1) + U * V : 0.5 * (R + P) * (l - 1);\n if (K < 0 || K > l - 1) {\n for (let H = 0; H < g; H++)\n for (let q = 0; q < d; q++) {\n let Z = q + H * _[2] + U * _[1] + E * _[0];\n x.values[Z] = u;\n }\n continue;\n }\n if (p === \"bilinear\") {\n let H = Math.floor(K), q = Math.ceil(K), Z = K - H;\n for (let ee = 0; ee < g; ee++) {\n let oe = g > 1 ? D * (m - 1) + ee * z : 0.5 * (D + M) * (m - 1);\n if (oe < 0 || oe > m - 1) {\n for (let ce = 0; ce < d; ce++) {\n let ye = ce + ee * _[2] + U * _[1] + E * _[0];\n x.values[ye] = u;\n }\n continue;\n }\n let J = Math.floor(oe), te = Math.ceil(oe), ie = oe - J;\n for (let ce = 0; ce < d; ce++) {\n let ye = ce + J * k[2] + H * k[1] + L * k[0], Ne = w[ye];\n ye = ce + te * k[2] + H * k[1] + L * k[0];\n let Ie = w[ye];\n ye = ce + J * k[2] + q * k[1] + L * k[0];\n let Ae = w[ye];\n ye = ce + te * k[2] + q * k[1] + L * k[0];\n let Re = w[ye], ot = Ne + (Ie - Ne) * ie, pt = Ae + (Re - Ae) * ie;\n ye = ce + ee * _[2] + U * _[1] + E * _[0], x.values[ye] = ot + (pt - ot) * Z;\n }\n }\n } else\n for (let H = 0; H < g; ++H) {\n let q = g > 1 ? D * (m - 1) + H * z : 0.5 * (D + M) * (m - 1);\n if (q < 0 || q > m - 1) {\n for (let oe = 0; oe < d; oe++) {\n let J = oe + H * _[2] + U * _[1] + E * _[0];\n x.values[J] = u;\n }\n continue;\n }\n let Z = Math.round(q), ee = Math.round(K);\n for (let oe = 0; oe < d; oe++) {\n let J = oe + Z * k[2] + ee * k[1] + L * k[0], te = oe + H * _[2] + U * _[1] + E * _[0];\n x.values[te] = w[J];\n }\n }\n }\n }\n return t10.makeTensorInfo(x.shape, x.dtype, x.values);\n}\nvar E2 = { kernelName: Xo, backendName: \"cpu\", kernelFunc: Wj };\nfunction Uj(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s, exclusive: a, reverse: i } = o;\n j(n, \"cumprod\");\n let p = S.getAxesPermutation([s], n.shape.length), u = n;\n p != null && (u = St({ inputs: { x: n }, backend: t10, attrs: { perm: p } }));\n let c = S.getInnerMostAxes(1, n.shape.length)[0];\n if (c !== u.shape.length - 1)\n throw new Error(`backend.cumprod in CPU expects an inner-most axis=${u.shape.length - 1} but got axis=${c}`);\n let l = dt(u.dtype, \"int32\"), m = y.makeOnesTypedArray(y.sizeFromShape(u.shape), l), d = t10.data.get(u.dataId).values, f = u.shape[u.shape.length - 1], h = i ? (x, b) => x + f - b - 1 : (x, b) => x + b;\n for (let x = 0; x < d.length; x += f)\n for (let b = 0; b < f; b++) {\n let C = h(x, b);\n if (b === 0)\n m[C] = a ? 1 : d[C];\n else {\n let w = h(x, b - 1);\n m[C] = a ? d[w] * m[w] : d[C] * m[w];\n }\n }\n let g = t10.makeTensorInfo(u.shape, l, m);\n if (p != null) {\n let x = S.getUndoAxesPermutation(p), b = St({ inputs: { x: g }, backend: t10, attrs: { perm: x } });\n return t10.disposeIntermediateTensorInfo(g), t10.disposeIntermediateTensorInfo(u), b;\n }\n return g;\n}\nvar A2 = { kernelName: qo, backendName: \"cpu\", kernelFunc: Uj };\nfunction Gj(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s, exclusive: a, reverse: i } = o;\n j(n, \"cumsum\");\n let p = S.getAxesPermutation([s], n.shape.length), u = n;\n p != null && (u = St({ inputs: { x: n }, backend: t10, attrs: { perm: p } }));\n let c = S.getInnerMostAxes(1, n.shape.length)[0];\n if (c !== u.shape.length - 1)\n throw new Error(`backend.cumsum in CPU expects an inner-most axis=${u.shape.length - 1} but got axis=${c}`);\n let l = dt(u.dtype, \"int32\"), m = y.makeZerosTypedArray(y.sizeFromShape(u.shape), l), d = t10.data.get(u.dataId).values, f = u.shape[u.shape.length - 1], h = i ? (x, b) => x + f - b - 1 : (x, b) => x + b;\n for (let x = 0; x < d.length; x += f)\n for (let b = 0; b < f; b++) {\n let C = h(x, b);\n if (b === 0)\n m[C] = a ? 0 : d[C];\n else {\n let w = h(x, b - 1);\n m[C] = a ? d[w] + m[w] : d[C] + m[w];\n }\n }\n let g = t10.makeTensorInfo(u.shape, l, m);\n if (p != null) {\n let x = S.getUndoAxesPermutation(p), b = St({ inputs: { x: g }, backend: t10, attrs: { perm: x } });\n return t10.disposeIntermediateTensorInfo(g), t10.disposeIntermediateTensorInfo(u), b;\n }\n return g;\n}\nvar R2 = { kernelName: jo, backendName: \"cpu\", kernelFunc: Gj };\nfunction Hj(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, weights: s } = e, { size: a, binaryOutput: i } = o;\n if (n.shape.length === 1) {\n let p = t10.data.get(n.dataId).values, u = t10.data.get(s.dataId).values, c = jp(p, u, s.dtype, s.shape, a);\n return t10.makeTensorInfo([a], s.dtype, c);\n } else if (n.shape.length === 2) {\n let p = t10.bufferSync(n), u = t10.bufferSync(s), c = uf(p, u, a, i);\n return t10.makeTensorInfo(c.shape, s.dtype, c.values);\n }\n throw new Error(`Error in denseBincount: input must be at most rank 2, but got rank${n.shape.length}.`);\n}\nvar D2 = { kernelName: ni, backendName: \"cpu\", kernelFunc: Hj };\nfunction Kj(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { blockSize: s, dataFormat: a } = o;\n y.assert(a === \"NHWC\", () => `Only NHWC dataFormat supported on CPU for depthToSpace. Got ${a}`);\n let i = n.shape[0], p = n.shape[1], u = n.shape[2], c = n.shape[3], l = p * s, m = u * s, d = c / (s * s), f = t10.data.get(n.dataId).values, h = new Float32Array(i * l * m * d), g = 0;\n for (let x = 0; x < i; ++x)\n for (let b = 0; b < l; ++b) {\n let C = Math.floor(b / s), w = b % s;\n for (let k = 0; k < m; ++k) {\n let _ = Math.floor(k / s), E = k % s, A = (w * s + E) * d;\n for (let R = 0; R < d; ++R) {\n let P = R + A + c * (_ + u * (C + p * x));\n h[g++] = f[P];\n }\n }\n }\n return t10.makeTensorInfo([i, l, m, d], n.dtype, h);\n}\nvar F2 = { kernelName: Yo, backendName: \"cpu\", kernelFunc: Kj };\nfunction LS(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, filter: s } = e, { strides: a, pad: i, dilations: p, dimRoundingMode: u } = o;\n j([n, s], \"depthwiseConv2DNative\");\n let c = y.computeStrides(n.shape), l = y.computeStrides(s.shape), m = p;\n m == null && (m = [1, 1]), y.assert(S.eitherStridesOrDilationsAreOne(a, m), () => `Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${a} and dilations '${m}'`);\n let d = S.computeConv2DInfo(n.shape, s.shape, a, m, i, u, true), { filterHeight: f, filterWidth: h, dilationHeight: g, dilationWidth: x, padInfo: b } = d, C = b.left, w = b.top, k = d.outChannels / d.inChannels, _ = new st(d.outShape, n.dtype), E = t10.data.get(n.dataId).values, A = t10.data.get(s.dataId).values, R = _.values;\n for (let D = 0; D < d.batchSize; ++D) {\n let P = D * c[0], M = D * _.strides[0];\n for (let L = 0; L < d.outHeight; ++L) {\n let V = M + L * _.strides[1], z = L * d.strideHeight - w;\n for (let U = 0; U < f; ++U) {\n let K = z + U * g;\n if (K < 0 || K >= d.inHeight)\n continue;\n let H = U * l[0], q = P + K * c[1];\n for (let Z = 0; Z < d.outWidth; ++Z) {\n let ee = V + Z * _.strides[2], oe = Z * d.strideWidth - C;\n for (let J = 0; J < h; ++J) {\n let te = oe + J * x;\n if (te < 0 || te >= d.inWidth)\n continue;\n let ie = H + J * l[1], ce = q + te * d.inChannels, ye = ee, Ne = ie;\n for (let Ie = 0; Ie < d.inChannels; ++Ie) {\n let Ae = E[ce + Ie];\n for (let Re = 0; Re < k; ++Re)\n R[ye + Re] += Ae * A[Ne + Re];\n ye += k, Ne += k;\n }\n }\n }\n }\n }\n }\n return t10.makeTensorInfo(_.shape, _.dtype, _.values);\n}\nvar O2 = { kernelName: Qo, backendName: \"cpu\", kernelFunc: LS };\nfunction qj(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, dy: s } = e, { strides: a, dilations: i, pad: p, dimRoundingMode: u, filterShape: c } = o;\n j([n, s], \"depthwiseConv2dNativeBackpropFilter\");\n let l = S.computeConv2DInfo(n.shape, c, a, i, p, u, true), { strideHeight: m, strideWidth: d, filterHeight: f, filterWidth: h } = l, g = new st(l.filterShape, \"float32\"), x = l.padInfo.left, b = l.padInfo.top, C = l.outChannels / l.inChannels, w = t10.data.get(n.dataId).values, k = new st(n.shape, n.dtype, w), _ = t10.data.get(s.dataId).values, E = new st(s.shape, s.dtype, _);\n for (let A = 0; A < f; ++A) {\n let R = Math.max(0, Math.ceil((b - A) / m)), D = Math.min(l.outHeight, (l.inHeight + b - A) / m);\n for (let P = 0; P < h; ++P) {\n let M = Math.max(0, Math.ceil((x - P) / d)), L = Math.min(l.outWidth, (l.inWidth + x - P) / d);\n for (let V = 0; V < l.outChannels; ++V) {\n let z = Math.trunc(V / C), U = V % C, K = 0;\n for (let H = 0; H < l.batchSize; ++H)\n for (let q = R; q < D; ++q) {\n let Z = A + q * m - b;\n for (let ee = M; ee < L; ++ee) {\n let oe = P + ee * d - x;\n K += k.get(H, Z, oe, z) * E.get(H, q, ee, V);\n }\n }\n g.set(K, A, P, z, U);\n }\n }\n }\n return t10.makeTensorInfo(g.shape, g.dtype, g.values);\n}\nvar P2 = { kernelName: yp, backendName: \"cpu\", kernelFunc: qj };\nfunction jj(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { dy: n, filter: s } = e, { strides: a, dilations: i, pad: p, dimRoundingMode: u, inputShape: c } = o;\n j([n, s], \"depthwiseConv2DNativeBackpropInput\");\n let l = y.computeStrides(n.shape), m = y.computeStrides(s.shape), d = S.computeConv2DInfo(c, s.shape, a, i, p, u, true), f = new st(d.inShape, \"float32\"), h = f.values, [g, x, b] = f.strides, C = t10.data.get(n.dataId).values, [w, k, _] = l, E = t10.data.get(s.dataId).values, [A, R, D] = m, { batchSize: P, filterHeight: M, filterWidth: L, inChannels: V, inHeight: z, inWidth: U, outChannels: K, outHeight: H, outWidth: q, strideHeight: Z, strideWidth: ee } = d, oe = M - 1 - d.padInfo.top, J = L - 1 - d.padInfo.left, te = K / V;\n for (let ie = 0; ie < P; ++ie)\n for (let ce = 0; ce < V; ++ce)\n for (let ye = 0; ye < z; ++ye) {\n let Ne = ye - oe, Ie = Math.max(0, Math.ceil(Ne / Z)), Ae = Math.min(H, (M + Ne) / Z);\n for (let Re = 0; Re < U; ++Re) {\n let ot = Re - J, pt = Math.max(0, Math.ceil(ot / ee)), ze = Math.min(q, (L + ot) / ee), ct = 0;\n for (let at = Ie; at < Ae; ++at) {\n let ft = at * Z - Ne;\n for (let ht = pt; ht < ze; ++ht) {\n let Rr = ht * ee - ot, Pt = w * ie + k * at + _ * ht, qr = A * (M - 1 - ft) + R * (L - 1 - Rr) + D * ce;\n for (let er = 0; er < te; ++er) {\n let Nt = ce * te + er, tr = C[Pt + Nt], rr = E[qr + er];\n ct += tr * rr;\n }\n }\n }\n h[g * ie + x * ye + b * Re + ce] = ct;\n }\n }\n return t10.makeTensorInfo(f.shape, f.dtype, f.values);\n}\nvar M2 = { kernelName: bp, backendName: \"cpu\", kernelFunc: jj };\nfunction Xj(r) {\n let { inputs: e, backend: t10 } = r, { x: o } = e, n = y.sizeFromShape(o.shape), s = t10.data.get(o.dataId).values, a = le([n, n], o.dtype), i = a.values;\n for (let u = 0; u < s.length; u++)\n i[u * n + u] = s[u];\n let p = [...o.shape, ...o.shape];\n return t10.makeTensorInfo(p, a.dtype, a.values);\n}\nvar L2 = { kernelName: si, backendName: \"cpu\", kernelFunc: Xj };\nvar B2 = { kernelName: ai, backendName: \"cpu\", kernelFunc: ({ inputs: r, backend: e, attrs: t10 }) => {\n let { x: o, filter: n } = r, { strides: s, pad: a, dilations: i } = t10, p = e, u = p.data.get(o.dataId).values, c = o.shape.length, l = p.data.get(n.dataId).values, m = n.shape.length, { batchSize: d, inHeight: f, inWidth: h, inChannels: g, outHeight: x, outWidth: b, padInfo: C, strideHeight: w, strideWidth: k, filterHeight: _, filterWidth: E, dilationHeight: A, dilationWidth: R, outShape: D } = S.computeDilation2DInfo(o.shape, n.shape, s, a, \"NHWC\", i), P = y.sizeFromShape(D), M = D.length, L = y.getArrayFromDType(o.dtype, P);\n for (let z = 0; z < d; ++z)\n for (let U = 0; U < x; ++U) {\n let K = U * w - C.top;\n for (let H = 0; H < b; ++H) {\n let q = H * k - C.left;\n for (let Z = 0; Z < g; ++Z) {\n let ee = Number.MIN_SAFE_INTEGER;\n for (let J = 0; J < _; ++J) {\n let te = K + J * A;\n if (te >= 0 && te < f)\n for (let ie = 0; ie < E; ++ie) {\n let ce = q + ie * R;\n if (ce >= 0 && ce < h) {\n let ye = y.locToIndex([z, te, ce, Z], c, y.computeStrides(o.shape)), Ne = y.locToIndex([J, ie, Z], m, y.computeStrides(n.shape)), Ie = u[ye] + l[Ne];\n Ie > ee && (ee = Ie);\n }\n }\n }\n let oe = y.locToIndex([z, U, H, Z], M, y.computeStrides(D));\n L[oe] = ee;\n }\n }\n }\n return { dataId: p.write(y.toTypedArray(L, o.dtype), D, o.dtype), shape: D, dtype: o.dtype };\n} };\nvar V2 = { kernelName: $b, backendName: \"cpu\", kernelFunc: ({ inputs: r, backend: e, attrs: t10 }) => {\n let { x: o, filter: n, dy: s } = r, { strides: a, pad: i, dilations: p } = t10, u = e, c = y.toNestedArray(o.shape, u.data.get(o.dataId).values), l = y.toNestedArray(n.shape, u.data.get(n.dataId).values), { batchSize: m, inHeight: d, inWidth: f, inChannels: h, outHeight: g, outWidth: x, padInfo: b, strideHeight: C, strideWidth: w, filterHeight: k, filterWidth: _, dilationHeight: E, dilationWidth: A, outShape: R } = S.computeDilation2DInfo(o.shape, n.shape, a, i, \"NHWC\", p);\n y.assert(s.rank === R.length, () => `Error in ${$b}, dy must have the same rank as output ${R.length}, but got ${s.rank}`);\n let D = y.toNestedArray(R, u.data.get(s.dataId).values), P = y.makeZerosNestedTypedArray(n.shape, n.dtype);\n for (let L = 0; L < m; ++L)\n for (let V = 0; V < g; ++V) {\n let z = V * C - b.top;\n for (let U = 0; U < x; ++U) {\n let K = U * w - b.left;\n for (let H = 0; H < h; ++H) {\n let q = Number.MIN_SAFE_INTEGER, Z = 0, ee = 0;\n for (let oe = 0; oe < k; ++oe) {\n let J = z + oe * E;\n if (J >= 0 && J < d)\n for (let te = 0; te < _; ++te) {\n let ie = K + te * A;\n if (ie >= 0 && ie < f) {\n let ce = c[L][J][ie][H] + l[oe][te][H];\n ce > q && (q = ce, Z = oe, ee = te);\n }\n }\n }\n P[Z][ee][H] += D[L][V][U][H];\n }\n }\n }\n return { dataId: u.write(y.toTypedArray(P, o.dtype), n.shape, n.dtype), shape: n.shape, dtype: n.dtype };\n} };\nvar z2 = { kernelName: _b, backendName: \"cpu\", kernelFunc: ({ inputs: r, backend: e, attrs: t10 }) => {\n let { x: o, filter: n, dy: s } = r, { strides: a, pad: i, dilations: p } = t10, u = e, c = y.toNestedArray(o.shape, u.data.get(o.dataId).values), l = y.toNestedArray(n.shape, u.data.get(n.dataId).values), { batchSize: m, inHeight: d, inWidth: f, inChannels: h, outHeight: g, outWidth: x, padInfo: b, strideHeight: C, strideWidth: w, filterHeight: k, filterWidth: _, dilationHeight: E, dilationWidth: A, outShape: R } = S.computeDilation2DInfo(o.shape, n.shape, a, i, \"NHWC\", p);\n y.assert(s.rank === R.length, () => `Error in ${_b}, dy must have the same rank as output ${R.length}, but got ${s.rank}`);\n let D = y.toNestedArray(R, u.data.get(s.dataId).values), P = y.makeZerosNestedTypedArray(o.shape, o.dtype);\n for (let L = 0; L < m; ++L)\n for (let V = 0; V < g; ++V) {\n let z = V * C - b.top;\n for (let U = 0; U < x; ++U) {\n let K = U * w - b.left;\n for (let H = 0; H < h; ++H) {\n let q = Number.MIN_SAFE_INTEGER, Z = z < 0 ? 0 : z, ee = K < 0 ? 0 : K;\n for (let oe = 0; oe < k; ++oe) {\n let J = z + oe * E;\n if (J >= 0 && J < d)\n for (let te = 0; te < _; ++te) {\n let ie = K + te * A;\n if (ie >= 0 && ie < f) {\n let ce = c[L][J][ie][H] + l[oe][te][H];\n ce > q && (q = ce, Z = J, ee = ie);\n }\n }\n }\n P[L][Z][ee][H] += D[L][V][U][H];\n }\n }\n }\n return { dataId: u.write(y.toTypedArray(P, o.dtype), o.shape, o.dtype), shape: o.shape, dtype: o.dtype };\n} };\nfunction za(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s, keepDims: a } = o;\n j(n, \"sum\");\n let i;\n n.dtype === \"bool\" ? i = vo({ inputs: { x: n }, backend: t10, attrs: { dtype: \"int32\" } }) : i = ir({ inputs: { x: n }, backend: t10 });\n let p = i.shape.length, u = y.parseAxisParam(s, i.shape), c = S.getAxesPermutation(u, p), l = u, m = i;\n c != null && (m = St({ inputs: { x: i }, backend: t10, attrs: { perm: c } }), l = S.getInnerMostAxes(l.length, p)), S.assertAxesAreInnerMostDims(\"sum\", l, m.shape.length);\n let [d, f] = S.computeOutAndReduceShapes(m.shape, l), h = S.upcastType(m.dtype, \"int32\"), g = Kp(t10, d, h), x = y.sizeFromShape(f), b = t10.data.get(g.dataId).values, C = t10.data.get(m.dataId).values;\n for (let w = 0; w < b.length; ++w) {\n let k = w * x, _ = 0;\n for (let E = 0; E < x; ++E)\n _ += C[k + E];\n b[w] = _;\n }\n if (a) {\n let w = S.expandShapeToKeepDim(g.shape, u), k = g;\n g = Le({ inputs: { x: g }, backend: t10, attrs: { shape: w } }), t10.disposeIntermediateTensorInfo(k);\n }\n return t10.disposeIntermediateTensorInfo(i), c != null && t10.disposeIntermediateTensorInfo(m), g;\n}\nvar W2 = { kernelName: Kn, backendName: \"cpu\", kernelFunc: za };\nfunction Yj(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { equation: n } = o, s = e, { allDims: a, summedDims: i, idDims: p } = S.decodeEinsumEquation(n, s.length);\n S.checkEinsumDimSizes(a.length, p, s);\n let { path: u, steps: c } = S.getEinsumComputePath(i, p), l = c.length, m = null, d = a.length, f = [];\n for (let h = 0; h < l; ++h) {\n for (let g of c[h]) {\n let { permutationIndices: x, expandDims: b } = S.getEinsumPermutation(d, p[g]), C;\n S.isIdentityPermutation(x) ? C = s[g] : (C = St({ inputs: { x: s[g] }, backend: t10, attrs: { perm: x } }), f.push(C));\n let w = C.shape.slice();\n for (let k = 0; k < b.length; ++k)\n w.splice(b[k], 0, 1);\n y.arraysEqual(C.shape, w) || (C = Le({ inputs: { x: C }, backend: t10, attrs: { shape: w } }), f.push(C)), m === null ? m = C : (m = Tu({ inputs: { a: C, b: m }, backend: t10 }), f.push(m));\n }\n h < l - 1 && (u[h] >= 0 && (m = za({ inputs: { x: m }, backend: t10, attrs: { axis: u[h] - (a.length - d), keepDims: false } }), f.push(m)), d--);\n }\n for (let h of f)\n h !== m && t10.disposeIntermediateTensorInfo(h);\n return m;\n}\nvar U2 = { kernelName: ii, backendName: \"cpu\", kernelFunc: Yj };\nfunction Qj(r) {\n let { inputs: e, backend: t10 } = r, { dy: o, y: n } = e;\n j([o, n], \"eluGrad\");\n let s = new Float32Array(y.sizeFromShape(n.shape)), a = t10.data.get(n.dataId).values, i = t10.data.get(o.dataId).values;\n for (let p = 0; p < a.length; ++p) {\n let u = a[p];\n u >= 1 ? s[p] = i[p] : s[p] = i[p] * (u + 1);\n }\n return t10.makeTensorInfo(n.shape, \"float32\", s);\n}\nvar G2 = { kernelName: Nm, backendName: \"cpu\", kernelFunc: Qj };\nvar Zj = S.ERF_P;\nvar Jj = S.ERF_A1;\nvar eX = S.ERF_A2;\nvar tX = S.ERF_A3;\nvar rX = S.ERF_A4;\nvar oX = S.ERF_A5;\nvar nX = we(da, (r) => {\n let e = Math.sign(r), t10 = Math.abs(r), o = 1 / (1 + Zj * t10);\n return e * (1 - ((((oX * o + rX) * o + tX) * o + eX) * o + Jj) * o * Math.exp(-t10 * t10));\n});\nvar H2 = { kernelName: da, backendName: \"cpu\", kernelFunc: nX };\nfunction ec(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { input: n } = e, { dim: s } = o, a = n.shape.length, i = n.shape.slice(), p = s;\n return s < 0 && (y.assert(-(a + 1) <= s, () => `Axis must be in the interval [${-(a + 1)}, ${a}]`), p = a + s + 1), i.splice(p, 0, 1), Le({ inputs: { x: n }, backend: t10, attrs: { shape: i } });\n}\nvar K2 = { kernelName: Ss, backendName: \"cpu\", kernelFunc: ec };\nvar sX = Be((r, e) => r / e);\nvar yl = Qe(Zo, sX);\nvar bl = { kernelName: Zo, backendName: \"cpu\", kernelFunc: yl };\nfunction vf(r, e, t10) {\n let o = r.shape, n = o[0], s = o[1], a = t10.data.get(r.dataId), i = a.complexTensorInfos.real, p = a.complexTensorInfos.imag, u = [n, s], c = y.sizeFromShape(u), l = y.getTypedArrayFromDType(\"float32\", c), m = y.getTypedArrayFromDType(\"float32\", c);\n for (let g = 0; g < n; g++) {\n let x = To({ inputs: { x: i }, backend: t10, attrs: { begin: [g, 0], size: [1, s] } }), b = To({ inputs: { x: p }, backend: t10, attrs: { begin: [g, 0], size: [1, s] } }), C = Ht({ inputs: { real: x, imag: b }, backend: t10 }), { real: w, imag: k } = aX(C, e, t10), _ = S.mergeRealAndImagArrays(w, k);\n for (let E = 0; E < s; E++) {\n let A = S.getComplexWithIndex(_, E);\n l[g * s + E] = A.real, m[g * s + E] = A.imag;\n }\n t10.disposeIntermediateTensorInfo(x), t10.disposeIntermediateTensorInfo(b), t10.disposeIntermediateTensorInfo(C);\n }\n let d = t10.makeTensorInfo(u, \"float32\", l), f = t10.makeTensorInfo(u, \"float32\", m), h = Ht({ inputs: { real: d, imag: f }, backend: t10 });\n return t10.disposeIntermediateTensorInfo(d), t10.disposeIntermediateTensorInfo(f), h;\n}\nfunction aX(r, e, t10) {\n let o = y.sizeFromShape(r.shape), n = t10.data.get(r.dataId), s = t10.data.get(n.complexTensorInfos.real.dataId).values, a = t10.data.get(n.complexTensorInfos.imag.dataId).values;\n if (iX(o)) {\n let i = BS(s, a, o, e, t10), p = [r.shape[0], r.shape[1]];\n if (e) {\n let u = t10.makeTensorInfo(p, \"float32\", i.real), c = t10.makeTensorInfo(p, \"float32\", i.imag), l = t10.makeTensorInfo([], \"float32\", y.createScalarValue(o, \"float32\")), m = ir({ inputs: { x: l }, backend: t10 }), d = bl.kernelFunc({ inputs: { a: u, b: l }, backend: t10 }), f = bl.kernelFunc({ inputs: { a: c, b: m }, backend: t10 }), h = t10.data.get(d.dataId).values, g = t10.data.get(f.dataId).values;\n return t10.disposeIntermediateTensorInfo(u), t10.disposeIntermediateTensorInfo(c), t10.disposeIntermediateTensorInfo(l), t10.disposeIntermediateTensorInfo(m), t10.disposeIntermediateTensorInfo(d), t10.disposeIntermediateTensorInfo(f), { real: h, imag: g };\n }\n return i;\n } else {\n let i = S.mergeRealAndImagArrays(s, a), p = uX(i, o, e);\n return S.splitRealAndImagArrays(p);\n }\n}\nfunction iX(r) {\n return (r & r - 1) === 0;\n}\nfunction BS(r, e, t10, o, n) {\n if (t10 === 1)\n return { real: r, imag: e };\n let s = S.mergeRealAndImagArrays(r, e), a = t10 / 2, i = S.complexWithEvenIndex(s), p = i.real, u = i.imag, c = [p.length], l = n.makeTensorInfo(c, \"float32\", p), m = n.makeTensorInfo(c, \"float32\", u), d = Ht({ inputs: { real: l, imag: m }, backend: n }), f = S.complexWithOddIndex(s), h = f.real, g = f.imag, x = [h.length], b = n.makeTensorInfo(x, \"float32\", h), C = n.makeTensorInfo(x, \"float32\", g), w = Ht({ inputs: { real: b, imag: C }, backend: n }), k = BS(p, u, a, o, n), _ = k.real, E = k.imag, A = [_.length], R = n.makeTensorInfo(A, \"float32\", _), D = n.makeTensorInfo(A, \"float32\", E), P = Ht({ inputs: { real: R, imag: D }, backend: n }), M = BS(h, g, a, o, n), L = M.real, V = M.imag, z = [L.length], U = n.makeTensorInfo(z, \"float32\", L), K = n.makeTensorInfo(z, \"float32\", V), H = Ht({ inputs: { real: U, imag: K }, backend: n }), q = S.exponents(t10, o), Z = [q.real.length], ee = n.makeTensorInfo(Z, \"float32\", q.real), oe = n.makeTensorInfo(Z, \"float32\", q.imag), J = Ht({ inputs: { real: ee, imag: oe }, backend: n }), te = Tu({ inputs: { a: J, b: H }, backend: n }), ie = Xs({ inputs: { a: P, b: te }, backend: n }), ce = gl({ inputs: { a: P, b: te }, backend: n }), ye = Io({ inputs: { input: ie }, backend: n }), Ne = Io({ inputs: { input: ce }, backend: n }), Ie = Ys({ inputs: { input: ie }, backend: n }), Ae = Ys({ inputs: { input: ce }, backend: n }), Re = Mi({ inputs: [ye, Ne], backend: n, attrs: { axis: 0 } }), ot = Mi({ inputs: [Ie, Ae], backend: n, attrs: { axis: 0 } }), pt = n.data.get(Re.dataId).values, ze = n.data.get(ot.dataId).values;\n return n.disposeIntermediateTensorInfo(l), n.disposeIntermediateTensorInfo(m), n.disposeIntermediateTensorInfo(d), n.disposeIntermediateTensorInfo(b), n.disposeIntermediateTensorInfo(C), n.disposeIntermediateTensorInfo(w), n.disposeIntermediateTensorInfo(R), n.disposeIntermediateTensorInfo(D), n.disposeIntermediateTensorInfo(P), n.disposeIntermediateTensorInfo(U), n.disposeIntermediateTensorInfo(K), n.disposeIntermediateTensorInfo(H), n.disposeIntermediateTensorInfo(ee), n.disposeIntermediateTensorInfo(oe), n.disposeIntermediateTensorInfo(J), n.disposeIntermediateTensorInfo(te), n.disposeIntermediateTensorInfo(ie), n.disposeIntermediateTensorInfo(ce), n.disposeIntermediateTensorInfo(ye), n.disposeIntermediateTensorInfo(Ie), n.disposeIntermediateTensorInfo(Ne), n.disposeIntermediateTensorInfo(Ae), n.disposeIntermediateTensorInfo(Re), n.disposeIntermediateTensorInfo(ot), { real: pt, imag: ze };\n}\nfunction uX(r, e, t10) {\n let o = new Float32Array(e * 2);\n for (let n = 0; n < e; n++) {\n let s = 0, a = 0;\n for (let i = 0; i < e; i++) {\n let p = S.exponent(n * i, e, t10), u = S.getComplexWithIndex(r, i);\n s += u.real * p.real - u.imag * p.imag, a += u.real * p.imag + u.imag * p.real;\n }\n t10 && (s /= e, a /= e), S.assignToTypedArray(o, s, a, n);\n }\n return o;\n}\nfunction pX(r) {\n let { inputs: e, backend: t10 } = r, { input: o } = e, n = y.sizeFromShape(o.shape), s = o.shape[o.shape.length - 1], a = n / s, i = Le({ inputs: { x: o }, backend: t10, attrs: { shape: [a, s] } }), p = vf(i, false, t10), u = Le({ inputs: { x: p }, backend: t10, attrs: { shape: o.shape } });\n return t10.disposeIntermediateTensorInfo(i), t10.disposeIntermediateTensorInfo(p), u;\n}\nvar q2 = { kernelName: ui, backendName: \"cpu\", kernelFunc: pX };\nfunction Cl(r) {\n let { backend: e, attrs: t10 } = r, { shape: o, value: n, dtype: s } = t10, a = s || y.inferDtype(n), i = y.getArrayFromDType(a, y.sizeFromShape(o));\n return cX(i, n, a), e.makeTensorInfo(o, a, i);\n}\nvar j2 = { kernelName: ws, backendName: \"cpu\", kernelFunc: Cl };\nfunction cX(r, e, t10) {\n r.fill(e);\n}\nvar X2 = { kernelName: rn, backendName: \"cpu\", kernelFunc: ({ inputs: r, attrs: e, backend: t10 }) => {\n let { image: o } = r, n = t10, s = y.getTypedArrayFromDType(o.dtype, y.sizeFromShape(o.shape)), [a, i, p, u] = o.shape, c = n.data.get(o.dataId).values;\n for (let m = 0; m < a; m++) {\n let d = m * p * i * u;\n for (let f = 0; f < i; f++) {\n let h = f * (p * u);\n for (let g = 0; g < p; g++) {\n let x = g * u;\n for (let b = 0; b < u; b++) {\n let C = Math.round(p - g - 1), w = d + h + x + b, k = c[w];\n if (C >= 0 && C < p) {\n let _ = C * u, E = d + h + _ + b;\n k = c[E];\n }\n s[w] = k;\n }\n }\n }\n }\n return { dataId: n.write(s, o.shape, o.dtype), shape: o.shape, dtype: o.dtype };\n} };\nvar lX = Be((r, e) => Math.floor(r / e));\nvar mX = Qe(nn, lX, null, \"int32\");\nvar Y2 = { kernelName: nn, backendName: \"cpu\", kernelFunc: mX };\nfunction dX(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, filter: s, bias: a, preluActivationWeights: i } = e, { strides: p, pad: u, dataFormat: c, dilations: l, dimRoundingMode: m, activation: d, leakyreluAlpha: f } = o, h = MS({ inputs: { x: n, filter: s }, backend: t10, attrs: { strides: p, pad: u, dataFormat: c, dilations: l, dimRoundingMode: m } });\n if (a) {\n let g = h;\n if (c === \"NCHW\" && a.shape.length === 1 && a.shape[0] !== 1) {\n let x = Le({ inputs: { x: a }, backend: t10, attrs: { shape: [a.shape[0], 1, 1] } });\n h = Xs({ inputs: { a: h, b: x }, backend: t10 }), t10.disposeIntermediateTensorInfo(x);\n } else\n h = Xs({ inputs: { a: h, b: a }, backend: t10 });\n t10.disposeIntermediateTensorInfo(g);\n }\n if (d) {\n let g = h;\n if (c === \"NCHW\" && d === \"prelu\" && i.shape.length === 1 && i.shape[0] !== 1) {\n let x = Le({ inputs: { x: i }, backend: t10, attrs: { shape: [i.shape[0], 1, 1] } });\n h = Du(t10, h, d, x, f), t10.disposeIntermediateTensorInfo(x);\n } else\n h = Du(t10, h, d, i, f);\n t10.disposeIntermediateTensorInfo(g);\n }\n return h;\n}\nvar Q2 = { kernelName: go, backendName: \"cpu\", kernelFunc: dX };\nfunction fX(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, filter: s, bias: a, preluActivationWeights: i } = e, { strides: p, pad: u, dataFormat: c, dilations: l, dimRoundingMode: m, activation: d, leakyreluAlpha: f } = o, h = LS({ inputs: { x: n, filter: s }, backend: t10, attrs: { strides: p, pad: u, dataFormat: c, dilations: l, dimRoundingMode: m } });\n if (a) {\n let g = h;\n h = Xs({ inputs: { a: h, b: a }, backend: t10 }), t10.disposeIntermediateTensorInfo(g);\n }\n if (d) {\n let g = h;\n h = Du(t10, h, d, i, f), t10.disposeIntermediateTensorInfo(g);\n }\n return h;\n}\nvar Z2 = { kernelName: xo, backendName: \"cpu\", kernelFunc: fX };\nfunction hX(r) {\n let { inputs: e, backend: t10 } = r, { params: o, indices: n } = e, s = y.sizeFromShape(o.shape), a = n.shape, i = a[a.length - 1], [p, u, c, l] = S.prepareAndValidate(o, n);\n if (u === 0)\n return t10.makeTensorInfo(p, o.dtype, []);\n let m = t10.data.get(n.dataId).values, d = t10.bufferSync(o), f = pf(m, d, o.dtype, u, i, c, l, o.shape, s);\n return t10.makeTensorInfo(p, o.dtype, f.values);\n}\nvar J2 = { kernelName: an, backendName: \"cpu\", kernelFunc: hX };\nfunction gX(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, indices: s } = e, { axis: a, batchDims: i } = o;\n j([n, s], \"gatherV2\");\n let p = y.parseAxisParam(a, n.shape)[0], u = t10.data.get(s.dataId).values, c = n.shape[p];\n for (let w = 0; w < u.length; ++w) {\n let k = u[w];\n y.assert(k <= c - 1 && k >= 0, () => `GatherV2: the index value ${k} is not in [0, ${c - 1}]`);\n }\n let l = i;\n i == null && (l = 0);\n let m = y.sizeFromShape(s.shape), d = S.segment_util.collectGatherOpShapeInfo(n, s, p, l), f = Le({ inputs: { x: n }, backend: t10, attrs: { shape: [d.batchSize, d.outerSize, d.dimSize, d.sliceSize] } }), h = Le({ inputs: { x: s }, backend: t10, attrs: { shape: [d.batchSize, m / d.batchSize] } }), g = [d.batchSize, d.outerSize, m / d.batchSize, d.sliceSize], x = t10.bufferSync(h), b = t10.bufferSync(f), C = cf(b, x, g);\n return t10.disposeIntermediateTensorInfo(f), t10.disposeIntermediateTensorInfo(h), t10.makeTensorInfo(d.outputShape, C.dtype, C.values);\n}\nvar e_ = { kernelName: Is, backendName: \"cpu\", kernelFunc: gX };\nfunction xX(r) {\n let { inputs: e, backend: t10 } = r, { input: o } = e, n = y.sizeFromShape(o.shape), s = o.shape[o.shape.length - 1], a = n / s, i = Le({ inputs: { x: o }, backend: t10, attrs: { shape: [a, s] } }), p = vf(i, true, t10), u = Le({ inputs: { x: p }, backend: t10, attrs: { shape: o.shape } });\n return t10.disposeIntermediateTensorInfo(i), t10.disposeIntermediateTensorInfo(p), u;\n}\nvar t_ = { kernelName: pi, backendName: \"cpu\", kernelFunc: xX };\nvar yX = we(ha, (r) => Number.isFinite(r) ? 1 : 0, \"bool\");\nvar r_ = { kernelName: ha, backendName: \"cpu\", kernelFunc: yX };\nvar bX = we(ga, (r) => Math.abs(r) === 1 / 0 ? 1 : 0, \"bool\");\nvar o_ = { kernelName: ga, backendName: \"cpu\", kernelFunc: bX };\nvar CX = we(cn, (r) => Number.isNaN(r) ? 1 : 0, \"bool\");\nvar n_ = { kernelName: cn, backendName: \"cpu\", kernelFunc: CX };\nfunction SX(r) {\n let { backend: e, attrs: t10 } = r, { start: o, stop: n, num: s } = t10, a = lf(o, n, s);\n return e.makeTensorInfo([a.length], \"float32\", a);\n}\nvar s_ = { kernelName: li, backendName: \"cpu\", kernelFunc: SX };\nvar wX = we(xa, (r) => Math.log1p(r));\nvar a_ = { kernelName: xa, backendName: \"cpu\", kernelFunc: wX };\nvar IX = Be((r, e) => r && e);\nvar vX = Qe(hn, IX, null, \"bool\");\nvar i_ = { kernelName: hn, backendName: \"cpu\", kernelFunc: vX };\nvar kX = we(gn, (r) => r ? 0 : 1, \"bool\");\nvar u_ = { kernelName: gn, backendName: \"cpu\", kernelFunc: kX };\nvar NX = Be((r, e) => r || e);\nvar TX = Qe(xn, NX, null, \"bool\");\nvar p_ = { kernelName: xn, backendName: \"cpu\", kernelFunc: TX };\nfunction _X(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { depthRadius: s, bias: a, alpha: i, beta: p } = o;\n j(n, \"LRN\");\n let u = n.shape[3], c = u - 1, l = t10.data.get(n.dataId).values, m = y.sizeFromShape(n.shape), d = new Float32Array(m);\n function f(h) {\n let g = h % u, x = h - g + Math.max(0, g - s), b = h - g + Math.min(g + s, c), C = 0;\n for (; x <= b; x++) {\n let w = l[x];\n C += w * w;\n }\n return C;\n }\n for (let h = 0; h < m; h++) {\n let g = f(h), x = l[h] * Math.pow(a + i * g, -p);\n d[h] = x;\n }\n return t10.makeTensorInfo(n.shape, n.dtype, d);\n}\nvar c_ = { kernelName: mi, backendName: \"cpu\", kernelFunc: _X };\nfunction $X(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, y: s, dy: a } = e, { depthRadius: i, bias: p, alpha: u, beta: c } = o;\n j(a, \"LRNGrad\");\n let l = y.sizeFromShape(a.shape), m = a.shape[3], d = t10.data.get(a.dataId).values, f = t10.data.get(n.dataId).values, h = t10.data.get(s.dataId).values, g = new Float32Array(l), x = l;\n for (let b = 0; b < x; b++) {\n let C = b % m, w = b - C + Math.max(0, C - i), k = b - C + Math.min(m, C + i + 1), _ = 0;\n for (let E = w; E < k; E++)\n _ += Math.pow(f[E], 2);\n _ = u * _ + p;\n for (let E = w; E < k; E++) {\n let A = -2 * u * c * f[E] * h[b] / _;\n b === E && (A += Math.pow(_, -c)), A *= d[b], g[E] += A;\n }\n }\n return t10.makeTensorInfo(a.shape, n.dtype, g);\n}\nvar l_ = { kernelName: Tm, backendName: \"cpu\", kernelFunc: $X };\nfunction VS(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { reductionIndices: s, keepDims: a } = o, i = t10, p = n.shape, u = p.length, c = y.parseAxisParam(s, p), l = c, m = S.getAxesPermutation(l, u), d = i.data.get(n.dataId).values;\n if (m != null) {\n let w = new Array(u);\n for (let k = 0; k < w.length; k++)\n w[k] = p[m[k]];\n d = Xp(d, p, n.dtype, m, w), l = S.getInnerMostAxes(l.length, u), p = w;\n }\n j(n, \"max\"), S.assertAxesAreInnerMostDims(\"max\", l, u);\n let [f, h] = S.computeOutAndReduceShapes(p, l), g = y.sizeFromShape(h), x = mf(d, g, f, n.dtype), b = i.write(x, f, n.dtype), C = f;\n return a && (C = S.expandShapeToKeepDim(f, c)), { dataId: b, shape: C, dtype: n.dtype };\n}\nvar m_ = { kernelName: yn, backendName: \"cpu\", kernelFunc: VS };\nfunction EX(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e;\n j(n, \"maxPool\");\n let { filterSize: s, strides: a, pad: i, dimRoundingMode: p } = o, u = 1;\n y.assert(S.eitherStridesOrDilationsAreOne(a, u), () => `Error in maxPool: Either strides or dilations must be 1. Got strides ${a} and dilations '${u}'`);\n let c = S.computePool2DInfo(n.shape, s, a, u, i, p), l;\n if (c.filterWidth === 1 && c.filterHeight === 1 && y.arraysEqual(c.inShape, c.outShape))\n l = ir({ inputs: { x: n }, backend: t10 });\n else {\n let m = t10.data.get(n.dataId).values, d = y.computeStrides(n.shape), f = Jp(m, n.shape, n.dtype, d, c, \"max\");\n l = t10.makeTensorInfo(c.outShape, n.dtype, f.values);\n }\n return l;\n}\nvar d_ = { kernelName: Cn, backendName: \"cpu\", kernelFunc: EX };\nfunction AX(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { filterSize: s, strides: a, pad: i, dimRoundingMode: p, dataFormat: u } = o;\n j(n, \"maxPool3d\");\n let c = S.computePool3DInfo(n.shape, s, a, 1, i, p, u), l = t10.data.get(n.dataId).values, m = If(l, n.shape, n.dtype, y.computeStrides(n.shape), c, \"max\");\n return t10.makeTensorInfo(m.shape, \"float32\", m.values);\n}\nvar f_ = { kernelName: Cp, backendName: \"cpu\", kernelFunc: AX };\nfunction RX(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { dy: n, input: s } = e, { filterSize: a, strides: i, pad: p, dimRoundingMode: u } = o;\n j([n, s], \"maxPool3DGrad\");\n let c = S.computePool3DInfo(s.shape, a, i, 1, p, u), l = t10.bufferSync(s), m = p2(l, c), d = c.strideDepth, f = c.strideHeight, h = c.strideWidth, g = c.dilationDepth, x = c.dilationHeight, b = c.dilationWidth, C = c.effectiveFilterDepth, w = c.effectiveFilterHeight, k = c.effectiveFilterWidth, _ = C - 1 - c.padInfo.front, E = k - 1 - c.padInfo.left, A = w - 1 - c.padInfo.top, R = le(s.shape, \"float32\"), D = t10.bufferSync(n);\n for (let P = 0; P < c.batchSize; ++P)\n for (let M = 0; M < c.inChannels; ++M)\n for (let L = 0; L < c.inDepth; ++L)\n for (let V = 0; V < c.inHeight; ++V)\n for (let z = 0; z < c.inWidth; ++z) {\n let U = L - _, K = V - A, H = z - E, q = 0;\n for (let Z = 0; Z < C; Z += g) {\n let ee = (U + Z) / d;\n if (!(ee < 0 || ee >= c.outDepth || Math.floor(ee) !== ee))\n for (let oe = 0; oe < w; oe += x) {\n let J = (K + oe) / f;\n if (!(J < 0 || J >= c.outHeight || Math.floor(J) !== J))\n for (let te = 0; te < k; te += b) {\n let ie = (H + te) / h;\n if (ie < 0 || ie >= c.outWidth || Math.floor(ie) !== ie)\n continue;\n let ce = C * w * k - 1 - m.get(P, ee, J, ie, M), ye = Z * w * k + oe * k + te, Ne = ce === ye ? 1 : 0;\n if (Ne === 0)\n continue;\n let Ie = D.get(P, ee, J, ie, M);\n q += Ie * Ne;\n }\n }\n }\n R.set(q, P, L, V, z, M);\n }\n return t10.makeTensorInfo(R.shape, R.dtype, R.values);\n}\nvar h_ = { kernelName: $m, backendName: \"cpu\", kernelFunc: RX };\nfunction DX(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { dy: n, input: s, output: a } = e, i = s;\n j([s, a], \"maxPoolGrad\");\n let { filterSize: p, strides: u, pad: c, dimRoundingMode: l } = o, m = S.computePool2DInfo(i.shape, p, u, 1, c, l), d = t10.data.get(i.dataId).values, f = le(m.outShape, i.dtype, wf(d, i.shape, i.dtype, m).values), h = m.strideHeight, g = m.strideWidth, x = m.dilationHeight, b = m.dilationWidth, C = m.effectiveFilterHeight, w = m.effectiveFilterWidth, k = w - 1 - m.padInfo.left, _ = C - 1 - m.padInfo.top, E = le(i.shape, \"float32\"), A = t10.data.get(n.dataId).values, R = le(n.shape, \"float32\", A);\n for (let D = 0; D < m.batchSize; ++D)\n for (let P = 0; P < m.inChannels; ++P)\n for (let M = 0; M < m.inHeight; ++M)\n for (let L = 0; L < m.inWidth; ++L) {\n let V = M - _, z = L - k, U = 0;\n for (let K = 0; K < C; K += x) {\n let H = (V + K) / h;\n if (!(H < 0 || H >= m.outHeight || Math.floor(H) !== H))\n for (let q = 0; q < w; q += b) {\n let Z = (z + q) / g;\n if (Z < 0 || Z >= m.outWidth || Math.floor(Z) !== Z)\n continue;\n let ee = C * w - 1 - f.get(D, H, Z, P), oe = K * w + q, J = ee === oe ? 1 : 0;\n if (J === 0)\n continue;\n let te = R.get(D, H, Z, P);\n U += te * J;\n }\n }\n E.set(U, D, M, L, P);\n }\n return t10.makeTensorInfo(E.shape, E.dtype, E.values);\n}\nvar g_ = { kernelName: _m, backendName: \"cpu\", kernelFunc: DX };\nfunction x_(r, e, t10, o, n) {\n let s = y.computeStrides(e), a = Jp(r, e, t10, s, n, \"max\"), i = wf(r, e, t10, n, true, o);\n return [a.values, i.values];\n}\nvar y_ = { kernelName: Sp, backendName: \"cpu\", kernelFunc: ({ inputs: r, attrs: e, backend: t10 }) => {\n let { x: o } = r, { filterSize: n, strides: s, pad: a, includeBatchInIndex: i } = e, p = t10;\n j(o, \"MaxPoolWithArgmax\");\n let u = p.data.get(o.dataId).values, c = S.computePool2DInfo(o.shape, n, s, [1, 1], a), [l, m] = x_(u, o.shape, o.dtype, i, c), d = p.write(l, c.outShape, o.dtype), f = p.write(m, c.outShape, o.dtype);\n return [{ dataId: d, shape: c.outShape, dtype: o.dtype }, { dataId: f, shape: c.outShape, dtype: \"int32\" }];\n} };\nfunction FX(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s, keepDims: a } = o, i = y.parseAxisParam(s, n.shape), u = S.computeOutAndReduceShapes(n.shape, i)[1], c = y.sizeFromShape(u), l = [], m = t10.makeTensorInfo([], \"float32\", new Float32Array([c]));\n l.push(m);\n let d = vo({ inputs: { x: n }, backend: t10, attrs: { dtype: \"float32\" } });\n l.push(d);\n let f = yl({ inputs: { a: d, b: m }, backend: t10 });\n l.push(f);\n let h = za({ inputs: { x: f }, backend: t10, attrs: { axis: s, keepDims: a } });\n return l.forEach((g) => t10.disposeIntermediateTensorInfo(g)), h;\n}\nvar b_ = { kernelName: Sn, backendName: \"cpu\", kernelFunc: FX };\nfunction OX(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s, keepDims: a } = o;\n j(n, \"min\");\n let i = y.parseAxisParam(s, n.shape), p = i, u = S.getAxesPermutation(p, n.shape.length), c = n;\n u != null && (c = St({ inputs: { x: n }, backend: t10, attrs: { perm: u } }), p = S.getInnerMostAxes(p.length, n.shape.length)), S.assertAxesAreInnerMostDims(\"min\", p, c.shape.length);\n let [l, m] = S.computeOutAndReduceShapes(c.shape, p), d = y.sizeFromShape(m), f = y.makeZerosTypedArray(y.sizeFromShape(l), c.dtype), h = t10.data.get(c.dataId).values;\n for (let x = 0; x < f.length; ++x) {\n let b = x * d, C = h[b];\n for (let w = 0; w < d; ++w) {\n let k = h[b + w];\n (Number.isNaN(k) || k < C) && (C = k);\n }\n f[x] = C;\n }\n u != null && t10.disposeIntermediateTensorInfo(c);\n let g = t10.makeTensorInfo(l, c.dtype, f);\n if (a) {\n let x = S.expandShapeToKeepDim(l, i), b = Le({ inputs: { x: g }, backend: t10, attrs: { shape: x } });\n return t10.disposeIntermediateTensorInfo(g), b;\n }\n return g;\n}\nvar C_ = { kernelName: wn, backendName: \"cpu\", kernelFunc: OX };\nfunction PX(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { paddings: s, mode: a } = o;\n j(n, \"mirrorPad\");\n let i = s.map((C, w) => C[0] + n.shape[w] + C[1]), p = s.map((C) => C[0]), u = s.map((C, w) => C[0] + n.shape[w]), c = a === \"reflect\" ? 0 : 1, l = t10.data.get(n.dataId).values, m = n.shape.length, d = y.computeStrides(n.shape), f = y.sizeFromShape(i), h = i.length, g = y.computeStrides(i), x = y.getTypedArrayFromDType(n.dtype, f);\n for (let C = 0; C < f; C++) {\n let w = y.indexToLoc(C, h, g);\n for (let _ = 0; _ < h; _++)\n w[_] < p[_] ? w[_] = p[_] * 2 - w[_] - c : w[_] >= u[_] && (w[_] = (u[_] - 1) * 2 - w[_] + c);\n w = w.map((_, E) => _ - p[E]);\n let k = y.locToIndex(w, m, d);\n x[C] = l[k];\n }\n return { dataId: t10.write(x, i, n.dtype), shape: i, dtype: n.dtype };\n}\nvar S_ = { kernelName: vn, backendName: \"cpu\", kernelFunc: PX };\nvar MX = Be((r, e) => {\n let t10 = r % e;\n return r < 0 && e < 0 || r >= 0 && e >= 0 ? t10 : (t10 + e) % e;\n});\nvar LX = Qe(ya, MX);\nvar w_ = { kernelName: ya, backendName: \"cpu\", kernelFunc: LX };\nvar v_ = ap(gC());\nfunction zS(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { logits: n } = e, { dim: s } = o, a = n.shape.length, i = s;\n if (i === -1 && (i = a - 1), i !== a - 1)\n throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${a} and dim was ${i}`);\n let p = y.parseAxisParam([i], n.shape), u = VS({ inputs: { x: n }, backend: t10, attrs: { reductionIndices: p, keepDims: false } }), c = S.expandShapeToKeepDim(u.shape, p), l = Le({ inputs: { x: u }, backend: t10, attrs: { shape: c } }), m = gl({ inputs: { a: n, b: l }, backend: t10 }), d = dS({ inputs: { x: m }, backend: t10 }), f = za({ inputs: { x: d }, backend: t10, attrs: { axis: p, keepDims: false } }), h = Le({ inputs: { x: f }, backend: t10, attrs: { shape: c } }), g = yl({ inputs: { a: d, b: h }, backend: t10 });\n return t10.disposeIntermediateTensorInfo(u), t10.disposeIntermediateTensorInfo(l), t10.disposeIntermediateTensorInfo(m), t10.disposeIntermediateTensorInfo(d), t10.disposeIntermediateTensorInfo(f), t10.disposeIntermediateTensorInfo(h), g;\n}\nvar I_ = { kernelName: qn, backendName: \"cpu\", kernelFunc: zS };\nfunction BX(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { logits: n } = e, { numSamples: s, seed: a, normalized: i } = o;\n j(n, \"multinomial\");\n let p = i ? n : zS({ inputs: { logits: n }, backend: t10, attrs: { dim: -1 } }), u = p.shape[0], c = p.shape[1], l = t10.data.get(p.dataId).values, m = [u, s], d = y.makeZerosTypedArray(y.sizeFromShape(m), \"int32\");\n for (let f = 0; f < u; ++f) {\n let h = f * c, g = new Float32Array(c - 1);\n g[0] = l[h];\n for (let C = 1; C < g.length; ++C)\n g[C] = g[C - 1] + l[h + C];\n let x = v_.alea(a.toString()), b = f * s;\n for (let C = 0; C < s; ++C) {\n let w = x();\n d[b + C] = g.length;\n for (let k = 0; k < g.length; k++)\n if (w < g[k]) {\n d[b + C] = k;\n break;\n }\n }\n }\n return i || t10.disposeIntermediateTensorInfo(p), t10.makeTensorInfo(m, \"int32\", d);\n}\nvar k_ = { kernelName: wp, backendName: \"cpu\", kernelFunc: BX };\nvar VX = Vt.nonMaxSuppressionV3Impl;\nfunction zX(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { boxes: n, scores: s } = e, { maxOutputSize: a, iouThreshold: i, scoreThreshold: p } = o;\n j(n, \"NonMaxSuppression\");\n let u = t10.data.get(n.dataId).values, c = t10.data.get(s.dataId).values, { selectedIndices: l } = VX(u, c, a, i, p);\n return t10.makeTensorInfo([l.length], \"int32\", new Int32Array(l));\n}\nvar N_ = { kernelName: Tn, backendName: \"cpu\", kernelFunc: zX };\nvar WX = Vt.nonMaxSuppressionV4Impl;\nfunction UX(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { boxes: n, scores: s } = e, { maxOutputSize: a, iouThreshold: i, scoreThreshold: p, padToMaxOutputSize: u } = o;\n j(n, \"NonMaxSuppressionPadded\");\n let c = t10.data.get(n.dataId).values, l = t10.data.get(s.dataId).values, { selectedIndices: m, validOutputs: d } = WX(c, l, a, i, p, u);\n return [t10.makeTensorInfo([m.length], \"int32\", new Int32Array(m)), t10.makeTensorInfo([], \"int32\", new Int32Array([d]))];\n}\nvar T_ = { kernelName: ba, backendName: \"cpu\", kernelFunc: UX };\nvar GX = Vt.nonMaxSuppressionV5Impl;\nfunction HX(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { boxes: n, scores: s } = e, { maxOutputSize: a, iouThreshold: i, scoreThreshold: p, softNmsSigma: u } = o;\n j(n, \"NonMaxSuppressionWithScore\");\n let c = t10.data.get(n.dataId).values, l = t10.data.get(s.dataId).values, m = a, d = i, f = p, h = u, { selectedIndices: g, selectedScores: x } = GX(c, l, m, d, f, h);\n return [t10.makeTensorInfo([g.length], \"int32\", new Int32Array(g)), t10.makeTensorInfo([x.length], \"float32\", new Float32Array(x))];\n}\nvar __ = { kernelName: _n, backendName: \"cpu\", kernelFunc: HX };\nfunction KX(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { indices: n } = e, { dtype: s, depth: a, onValue: i, offValue: p } = o;\n j(n, \"oneHot\");\n let u = y.sizeFromShape(n.shape), c = new Float32Array(u * a);\n c.fill(p);\n let l = t10.data.get(n.dataId).values;\n for (let m = 0; m < u; ++m)\n l[m] >= 0 && l[m] < a && (c[m * a + l[m]] = i);\n return t10.makeTensorInfo([...n.shape, a], s, c);\n}\nvar $_ = { kernelName: $n, backendName: \"cpu\", kernelFunc: KX };\nfunction Sl(r) {\n let { inputs: e, backend: t10 } = r, { x: o } = e;\n if (o.dtype === \"string\")\n throw new Error(\"zerosLike is not supported for string tensors\");\n if (o.dtype === \"complex64\") {\n let n = Io({ inputs: { input: o }, backend: t10 }), s = Sl({ inputs: { x: n }, backend: t10 }), a = Ys({ inputs: { input: o }, backend: t10 }), i = Sl({ inputs: { x: a }, backend: t10 }), p = Ht({ inputs: { real: s, imag: i }, backend: t10 });\n return t10.disposeIntermediateTensorInfo(n), t10.disposeIntermediateTensorInfo(s), t10.disposeIntermediateTensorInfo(a), t10.disposeIntermediateTensorInfo(i), p;\n } else\n return Cl({ backend: t10, attrs: { shape: o.shape, value: 0, dtype: o.dtype } });\n}\nvar E_ = { kernelName: Os, backendName: \"cpu\", kernelFunc: Sl };\nfunction A_(r) {\n let { inputs: e, backend: t10 } = r, { x: o } = e;\n if (o.dtype === \"string\")\n throw new Error(\"onesLike is not supported for string tensors\");\n if (o.dtype === \"complex64\") {\n let n = Io({ inputs: { input: o }, backend: t10 }), s = A_({ inputs: { x: n }, backend: t10 }), a = Ys({ inputs: { input: o }, backend: t10 }), i = Sl({ inputs: { x: a }, backend: t10 }), p = Ht({ inputs: { real: s, imag: i }, backend: t10 });\n return t10.disposeIntermediateTensorInfo(n), t10.disposeIntermediateTensorInfo(s), t10.disposeIntermediateTensorInfo(a), t10.disposeIntermediateTensorInfo(i), p;\n } else\n return Cl({ backend: t10, attrs: { shape: o.shape, value: 1, dtype: o.dtype } });\n}\nvar R_ = { kernelName: ks, backendName: \"cpu\", kernelFunc: A_ };\nfunction WS(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { axis: n } = o;\n if (e.length === 1)\n return ec({ inputs: { input: e[0] }, backend: t10, attrs: { dim: n } });\n let s = e[0].shape, a = e[0].dtype;\n e.forEach((c) => {\n y.assertShapesMatch(s, c.shape, \"All tensors passed to stack must have matching shapes\"), y.assert(a === c.dtype, () => \"All tensors passed to stack must have matching dtypes\");\n });\n let i = [], p = e.map((c) => {\n let l = ec({ inputs: { input: c }, backend: t10, attrs: { dim: n } });\n return i.push(l), l;\n }), u = Mi({ inputs: p, backend: t10, attrs: { axis: n } });\n return i.forEach((c) => t10.disposeIntermediateTensorInfo(c)), u;\n}\nvar D_ = { kernelName: Ns, backendName: \"cpu\", kernelFunc: WS };\nfunction qX(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { paddings: s, constantValue: a } = o;\n j(n, \"pad\");\n let i = s.map((b, C) => b[0] + n.shape[C] + b[1]), p = s.map((b) => b[0]), u = t10.data.get(n.dataId).values, c = y.sizeFromShape(n.shape), l = n.shape.length, m = y.computeStrides(n.shape), d = y.sizeFromShape(i), f = i.length, h = y.computeStrides(i), g = y.getTypedArrayFromDType(n.dtype, d);\n a !== 0 && g.fill(a);\n for (let b = 0; b < c; b++) {\n let w = y.indexToLoc(b, l, m).map((_, E) => _ + p[E]), k = y.locToIndex(w, f, h);\n g[k] = u[b];\n }\n return { dataId: t10.write(g, i, n.dtype), shape: i, dtype: n.dtype };\n}\nvar kf = { kernelName: En, backendName: \"cpu\", kernelFunc: qX };\nvar jX = Be((r, e) => Math.pow(r, e));\nvar XX = Qe(An, jX);\nvar F_ = { kernelName: An, backendName: \"cpu\", kernelFunc: XX };\nfunction YX(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { paramsNestedSplits: n, paramsDenseValues: s, indices: a } = e, { outputRaggedRank: i } = o, p = n.map((x) => t10.data.get(x.dataId).values), u = n.map((x) => x.shape), c = t10.data.get(s.dataId).values, l = t10.data.get(a.dataId).values, [m, d, f] = df(p, u, c, s.shape, s.dtype, l, a.shape, i), h = m.map((x) => t10.makeTensorInfo([x.length], \"int32\", x)), g = t10.makeTensorInfo(f, s.dtype, d);\n return h.concat([g]);\n}\nvar O_ = { kernelName: Ip, backendName: \"cpu\", kernelFunc: YX };\nfunction QX(r) {\n let { inputs: e, backend: t10 } = r, { starts: o, limits: n, deltas: s } = e, a = t10.data.get(o.dataId).values, i = t10.data.get(n.dataId).values, p = t10.data.get(s.dataId).values, [u, c] = ff(a, o.shape, o.dtype, i, n.shape, p, s.shape), l = t10.makeTensorInfo([u.length], \"int32\", u), m = t10.makeTensorInfo([c.length], o.dtype, c);\n return [l, m];\n}\nvar P_ = { kernelName: vp, backendName: \"cpu\", kernelFunc: QX };\nfunction ZX(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { shape: n, values: s, defaultValue: a, rowPartitionTensors: i } = e, { rowPartitionTypes: p } = o, u = t10.data.get(n.dataId).values, c = t10.data.get(s.dataId).values, l = t10.data.get(a.dataId).values, m = i.map((g) => t10.data.get(g.dataId).values), d = i.map((g) => g.shape), [f, h] = hf(u, n.shape, c, s.shape, s.dtype, l, a.shape, m, d, p);\n return t10.makeTensorInfo(f, s.dtype, h);\n}\nvar M_ = { kernelName: kp, backendName: \"cpu\", kernelFunc: ZX };\nfunction JX(r) {\n let { backend: e, attrs: t10 } = r, { start: o, stop: n, dtype: s, step: a } = t10, i = _u(o, n, a, s);\n return e.makeTensorInfo([i.length], s, i);\n}\nvar L_ = { kernelName: Ts, backendName: \"cpu\", kernelFunc: JX };\nvar e5 = we(Fn, (r) => 1 / r);\nvar B_ = { kernelName: Fn, backendName: \"cpu\", kernelFunc: e5 };\nfunction t5(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { images: n } = e, { alignCorners: s, halfPixelCenters: a, size: i } = o;\n j(n, \"resizeBilinear\");\n let p = y.computeStrides(n.shape), [u, c] = i, [l, m, d, f] = n.shape, h = t10.data.get(n.dataId).values, g = new Float32Array(y.sizeFromShape([l, u, c, f])), x = [s && u > 1 ? m - 1 : m, s && c > 1 ? d - 1 : d], b = [s && u > 1 ? u - 1 : u, s && c > 1 ? c - 1 : c], C = 0, w = x[0] / b[0], k = x[1] / b[1];\n for (let _ = 0; _ < l; _++)\n for (let E = 0; E < u; E++) {\n let A;\n a ? A = w * (E + 0.5) - 0.5 : A = w * E;\n let R = Math.max(0, Math.floor(A)), D = A - R, P = Math.min(m - 1, Math.ceil(A)), M = _ * p[0] + R * p[1], L = _ * p[0] + P * p[1];\n for (let V = 0; V < c; V++) {\n let z;\n a ? z = k * (V + 0.5) - 0.5 : z = k * V;\n let U = Math.max(0, Math.floor(z)), K = z - U, H = Math.min(d - 1, Math.ceil(z)), q = M + U * p[2], Z = L + U * p[2], ee = M + H * p[2], oe = L + H * p[2];\n for (let J = 0; J < f; J++) {\n let te = h[q + J], ie = h[Z + J], ce = h[ee + J], ye = h[oe + J], Ne = te + (ce - te) * K, Ie = ie + (ye - ie) * K, Ae = Ne + (Ie - Ne) * D;\n g[C++] = Ae;\n }\n }\n }\n return t10.makeTensorInfo([l, u, c, f], \"float32\", g);\n}\nvar V_ = { kernelName: Mn, backendName: \"cpu\", kernelFunc: t5 };\nfunction r5(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { images: n, dy: s } = e, { alignCorners: a } = o;\n j([s, n], \"resizeBilinearGrad\");\n let i = y.computeStrides(n.shape), [p, u, c, l] = n.shape, [, m, d] = s.shape, f = new Float32Array(p * u * c * l), h = [a && m > 1 ? u - 1 : u, a && d > 1 ? c - 1 : c], g = [a && m > 1 ? m - 1 : m, a && d > 1 ? d - 1 : d], x = h[0] / g[0], b = h[1] / g[1], C = t10.data.get(s.dataId).values, w = 0;\n for (let k = 0; k < p; k++) {\n let _ = k * i[0];\n for (let E = 0; E < m; E++) {\n let A = E * x, R = Math.floor(A), D = Math.min(Math.ceil(A), u - 1), P = _ + R * i[1], M = _ + D * i[1], L = A - R, V = 1 - L;\n for (let z = 0; z < d; z++) {\n let U = z * b, K = Math.floor(U), H = Math.min(Math.ceil(U), c - 1), q = U - K, Z = 1 - q, ee = P + K * i[2], oe = P + H * i[2], J = M + K * i[2], te = M + H * i[2], ie = V * Z, ce = V * q, ye = L * Z, Ne = L * q;\n for (let Ie = 0; Ie < l; Ie++) {\n let Ae = C[w++];\n f[ee + Ie] += Ae * ie, f[oe + Ie] += Ae * ce, f[J + Ie] += Ae * ye, f[te + Ie] += Ae * Ne;\n }\n }\n }\n }\n return t10.makeTensorInfo([p, c, u, l], \"float32\", f);\n}\nvar z_ = { kernelName: Am, backendName: \"cpu\", kernelFunc: r5 };\nfunction o5(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { images: n } = e, { alignCorners: s, halfPixelCenters: a, size: i } = o;\n j(n, \"resizeNearestNeighbor\");\n let p = y.computeStrides(n.shape), [u, c] = i, [l, m, d, f] = n.shape, h = t10.data.get(n.dataId).values, g = new Float32Array(l * u * c * f), x = [s && u > 1 ? m - 1 : m, s && c > 1 ? d - 1 : d], b = [s && u > 1 ? u - 1 : u, s && c > 1 ? c - 1 : c], C = x[0] / b[0], w = x[1] / b[1], k = 0;\n for (let _ = 0; _ < l; _++) {\n let E = _ * p[0];\n for (let A = 0; A < u; A++) {\n let R = a ? C * (A + 0.5) : C * A, D = Math.min(m - 1, s ? Math.round(R) : Math.floor(R));\n a && (D = Math.max(0, D));\n let P = E + D * p[1];\n for (let M = 0; M < c; M++) {\n let L = a ? w * (M + 0.5) : w * M, V = Math.min(d - 1, s ? Math.round(L) : Math.floor(L));\n a && (V = Math.max(0, V));\n let z = P + V * p[2];\n for (let U = 0; U < f; U++) {\n let K = h[z + U];\n g[k++] = K;\n }\n }\n }\n }\n return t10.makeTensorInfo([l, u, c, f], n.dtype, g);\n}\nvar W_ = { kernelName: Pn, backendName: \"cpu\", kernelFunc: o5 };\nfunction n5(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { images: n, dy: s } = e, { alignCorners: a } = o;\n j([s, n], \"resizeNearestNeighborGrad\");\n let i = y.computeStrides(n.shape), p = y.computeStrides(s.shape), [u, c, l, m] = n.shape, [, d, f] = s.shape, h = new Float32Array(u * c * l * m), g = t10.data.get(s.dataId).values, x = [a && d > 1 ? c - 1 : c, a && f > 1 ? l - 1 : l], b = [a && d > 1 ? d - 1 : d, a && f > 1 ? f - 1 : f], C = x[0] / b[0], w = x[1] / b[1], k = 1 / C, _ = 1 / w, E = Math.ceil(k) * 2 + 2, A = Math.ceil(_) * 2 + 2;\n for (let R = 0; R < u; R++) {\n let D = R * i[0];\n for (let P = 0; P < c; P++) {\n let M = D + P * i[1], L = Math.floor(P * k), V = Math.floor(L - E / 2);\n for (let z = 0; z < l; z++) {\n let U = M + z * i[2], K = Math.floor(z * _), H = Math.floor(K - A / 2);\n for (let q = 0; q < m; q++) {\n let Z = 0;\n for (let ee = 0; ee < E; ee++) {\n let oe = ee + V;\n if (oe < 0 || oe >= d)\n continue;\n let J = D + oe * p[1], te = oe * C, ie = Math.min(c - 1, a ? Math.round(te) : Math.floor(te));\n if (P === ie)\n for (let ce = 0; ce < A; ce++) {\n let ye = ce + H;\n if (ye < 0 || ye >= f)\n continue;\n let Ne = J + ye * p[2], Ie = ye * w, Ae = Math.min(l - 1, a ? Math.round(Ie) : Math.floor(Ie));\n z === Ae && (Z += g[Ne + q]);\n }\n }\n h[U + q] = Z;\n }\n }\n }\n }\n return t10.makeTensorInfo(n.shape, n.dtype, h);\n}\nvar U_ = { kernelName: Em, backendName: \"cpu\", kernelFunc: n5 };\nfunction s5(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { dims: s } = o;\n j(n, \"reverse\");\n let a = n.shape.length, i = y.parseAxisParam(s, n.shape);\n if (a === 0)\n return ir({ inputs: { x: n }, backend: t10 });\n let p = new st(n.shape, n.dtype), u = t10.bufferSync(n);\n for (let c = 0; c < p.size; c++) {\n let l = p.indexToLoc(c), m = l.slice();\n i.forEach((d) => m[d] = n.shape[d] - 1 - m[d]), p.set(u.get(...m), ...l);\n }\n return t10.makeTensorInfo(p.shape, p.dtype, p.values);\n}\nvar G_ = { kernelName: Bn, backendName: \"cpu\", kernelFunc: s5 };\nvar H_ = { kernelName: ts, backendName: \"cpu\", kernelFunc: ({ inputs: r, attrs: e, backend: t10 }) => {\n let { image: o } = r, { radians: n, fillValue: s, center: a } = e, i = t10, p = y.getTypedArrayFromDType(o.dtype, y.sizeFromShape(o.shape)), [u, c, l, m] = o.shape, [d, f] = S.getImageCenter(a, c, l), h = 255, g = Math.sin(n), x = Math.cos(n), b = i.data.get(o.dataId).values;\n for (let w = 0; w < u; w++) {\n let k = w * l * c * m;\n for (let _ = 0; _ < c; _++) {\n let E = _ * (l * m);\n for (let A = 0; A < l; A++) {\n let R = A * m;\n for (let D = 0; D < m; D++) {\n let P = [u, _, A, D], M = P[2], L = P[1], V = (M - d) * x - (L - f) * g, z = (M - d) * g + (L - f) * x;\n V = Math.round(V + d), z = Math.round(z + f);\n let U = s;\n if (typeof s != \"number\" && (D === 3 ? U = h : U = s[D]), V >= 0 && V < l && z >= 0 && z < c) {\n let H = z * (l * m), q = V * m, Z = k + H + q + D;\n U = b[Z];\n }\n let K = k + E + R + D;\n p[K] = U;\n }\n }\n }\n }\n return { dataId: i.write(p, o.shape, o.dtype), shape: o.shape, dtype: o.dtype };\n} };\nvar a5 = we(Vn, (r) => {\n let e = Math.floor(r);\n return r - e < 0.5 ? Math.floor(r) : r - e > 0.5 ? Math.ceil(r) : e % 2 === 0 ? e : e + 1;\n});\nvar K_ = { kernelName: Vn, backendName: \"cpu\", kernelFunc: a5 };\nfunction i5(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { indices: n, updates: s } = e, { shape: a } = o, { sliceRank: i, numUpdates: p, sliceSize: u, strides: c, outputSize: l } = S.calculateShapes(s, n, a), m = true, d = t10.bufferSync(n), f = t10.bufferSync(s), h = Va(d, f, a, l, u, p, i, c, 0, m);\n return t10.makeTensorInfo(a, h.dtype, h.values);\n}\nvar q_ = { kernelName: Wn, backendName: \"cpu\", kernelFunc: i5 };\nfunction u5(r, e) {\n let t10 = 0, o = r.length, n = 0;\n for (; t10 < o; )\n n = Math.floor((t10 + o) / 2), r[n] < e ? t10 = n + 1 : o = n;\n return o;\n}\nfunction p5(r, e) {\n let t10 = 0, o = r.length, n = 0;\n for (; t10 < o; )\n n = Math.floor((t10 + o) / 2), r[n] <= e ? t10 = n + 1 : o = n;\n return o;\n}\nfunction j_(r, e, t10, o, n, s) {\n let a = y.getArrayFromDType(\"int32\", t10 * n);\n for (let i = 0; i < t10; ++i) {\n let p = r.slice(i * o, (i + 1) * o), u = i * n;\n for (let c = 0; c < n; ++c)\n a[u + c] = s === \"left\" ? u5(p, e[c + u]) : p5(p, e[c + u]);\n }\n return a;\n}\nfunction c5(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { sortedSequence: n, values: s } = e, { side: a } = o, i = t10.data.get(n.dataId).values, p = t10.data.get(s.dataId).values, u = j_(i, p, n.shape[0], n.shape[1], s.shape[1], a);\n return t10.makeTensorInfo(s.shape, \"int32\", u);\n}\nvar X_ = { kernelName: fi, backendName: \"cpu\", kernelFunc: c5 };\nfunction l5(r) {\n let { inputs: e, backend: t10 } = r, { condition: o, t: n, e: s } = e;\n j([o, n, s], \"select\");\n let a = o.shape.length, i = t10.data.get(o.dataId).values, p = t10.data.get(n.dataId).values, u = t10.data.get(s.dataId).values, c = dt(n.dtype, s.dtype), l = y.makeZerosTypedArray(y.sizeFromShape(n.shape), c), m = 0, d = a === 0 || a > 1 || n.shape.length === 1 ? 1 : y.sizeFromShape(n.shape.slice(1));\n for (let f = 0; f < i.length; f++)\n for (let h = 0; h < d; h++)\n i[f] === 1 ? l[m++] = p[f] : l[m++] = u[f];\n return t10.makeTensorInfo(n.shape, c, l);\n}\nvar Y_ = { kernelName: $s, backendName: \"cpu\", kernelFunc: l5 };\nvar m5 = S.SELU_SCALEALPHA;\nvar d5 = S.SELU_SCALE;\nvar f5 = we(Ca, (r) => r >= 0 ? d5 * r : m5 * (Math.exp(r) - 1));\nvar Q_ = { kernelName: Ca, backendName: \"cpu\", kernelFunc: f5 };\nvar h5 = we(wa, (r) => r < 0 ? -1 : r > 0 ? 1 : 0);\nvar Z_ = { kernelName: wa, backendName: \"cpu\", kernelFunc: h5 };\nvar g5 = we(Un, (r) => Math.sin(r));\nvar J_ = { kernelName: Un, backendName: \"cpu\", kernelFunc: g5 };\nvar x5 = we(Sa, (r) => Math.sinh(r));\nvar e$ = { kernelName: Sa, backendName: \"cpu\", kernelFunc: x5 };\nvar y5 = 11920928955078125e-23;\nvar t$ = Math.log(y5) + 2;\nvar b5 = we(Ia, (r) => {\n let e = r > -t$, t10 = r < t$, o = Math.exp(r), n;\n return t10 ? n = o : e ? n = r : n = Math.log(1 + o), n;\n});\nvar r$ = { kernelName: Ia, backendName: \"cpu\", kernelFunc: b5 };\nfunction C5(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { blockShape: s, paddings: a } = o;\n j([n], \"spaceToBatchND\");\n let i = y.sizeFromShape(s), p = [[0, 0]];\n p.push(...a);\n for (let _ = 1 + s.length; _ < n.shape.length; ++_)\n p.push([0, 0]);\n let u = kf.kernelFunc({ inputs: { x: n }, backend: t10, attrs: { paddings: p, constantValue: 0 } }), c = S.getReshaped(u.shape, s, i, false), l = S.getPermuted(c.length, s.length, false), m = S.getReshapedPermuted(u.shape, s, i, false), h = Le({ inputs: { x: u }, backend: t10, attrs: { shape: c } }), b = St({ inputs: { x: h }, backend: t10, attrs: { perm: l } }), k = Le({ inputs: { x: b }, backend: t10, attrs: { shape: m } });\n return t10.disposeIntermediateTensorInfo(u), t10.disposeIntermediateTensorInfo(h), t10.disposeIntermediateTensorInfo(b), k;\n}\nvar o$ = { kernelName: As, backendName: \"cpu\", kernelFunc: C5 };\nfunction S5(r) {\n let { inputs: e, backend: t10 } = r, { indices: o, values: n, denseShape: s, defaultValue: a } = e;\n if (s.shape.length !== 1)\n throw new Error(`Dense shape must be a vector, saw:\n ${s.shape}`);\n if (o.shape.length !== 2)\n throw new Error(`Indices must be a matrix, saw:\n ${o.shape}`);\n if (n.shape.length !== 1)\n throw new Error(`Values must be a vector, saw:\n ${n.shape}`);\n if (a.shape.length !== 0)\n throw new Error(`Default value must be a scalar, saw:\n ${a.shape}`);\n let i = t10.data.get(o.dataId).values, p = t10.data.get(n.dataId).values, u = t10.data.get(s.dataId).values, c = t10.data.get(a.dataId).values[0], [l, m, d, f, h] = gf(i, o.shape, o.dtype, p, n.dtype, u, c);\n return [t10.makeTensorInfo(m, o.dtype, l), t10.makeTensorInfo([m[0]], n.dtype, d), t10.makeTensorInfo([f.length], \"bool\", new Uint8Array(f.map((g) => Number(g)))), t10.makeTensorInfo([h.length], o.dtype, new Int32Array(h))];\n}\nvar n$ = { kernelName: hi, backendName: \"cpu\", kernelFunc: S5 };\nfunction w5(r) {\n let { inputs: e, backend: t10 } = r, { inputIndices: o, inputShape: n, newShape: s } = e;\n if (o.shape.length !== 2)\n throw new Error(`Input indices should be a matrix but received shape\n ${o.shape}`);\n if (n.shape.length !== 1)\n throw new Error(`Input shape should be a vector but received shape\n ${n.shape}`);\n if (s.shape.length !== 1)\n throw new Error(`Target shape should be a vector but received shape ${s.shape}`);\n let a = Array.from(t10.data.get(n.dataId).values), i = t10.data.get(o.dataId).values, p = Array.from(t10.data.get(s.dataId).values), [u, c, l] = xf(i, o.shape, o.dtype, a, p);\n return [t10.makeTensorInfo(c, o.dtype, u), t10.makeTensorInfo([l.length], s.dtype, new Int32Array(l))];\n}\nvar s$ = { kernelName: va, backendName: \"cpu\", kernelFunc: w5 };\nfunction I5(r) {\n let { inputs: e, backend: t10 } = r, { data: o, indices: n, segmentIds: s } = e;\n if (o.shape.length < 1)\n throw new Error(\"Data should be at least 1 dimensional but received scalar\");\n if (n.shape.length !== 1)\n throw new Error(`Indices should be a vector but received shape\n ${n.shape}`);\n if (s.shape.length !== 1)\n throw new Error(`Segment ids should be a vector but received shape\n ${s.shape}`);\n if (n.shape[0] !== s.shape[0])\n throw new Error(\"segmentIds and indices should have same size.\");\n let a = t10.data.get(o.dataId).values, i = t10.data.get(n.dataId).values, p = t10.data.get(s.dataId).values, [u, c] = Qp(a, o.shape, o.dtype, i, p, true);\n return t10.makeTensorInfo(c, o.dtype, u);\n}\nvar a$ = { kernelName: gi, backendName: \"cpu\", kernelFunc: I5 };\nfunction v5(r) {\n let { inputs: e, backend: t10 } = r, { data: o, indices: n, segmentIds: s } = e;\n if (o.shape.length < 1)\n throw new Error(\"Data should be at least 1 dimensional but received scalar\");\n if (n.shape.length !== 1)\n throw new Error(`Indices should be a vector but received shape\n ${n.shape}`);\n if (s.shape.length !== 1)\n throw new Error(`Segment ids should be a vector but received shape\n ${s.shape}`);\n if (n.shape[0] !== s.shape[0])\n throw new Error(\"segmentIds and indices should have same size.\");\n let a = t10.data.get(o.dataId).values, i = t10.data.get(n.dataId).values, p = t10.data.get(s.dataId).values, [u, c] = Qp(a, o.shape, o.dtype, i, p);\n return t10.makeTensorInfo(c, o.dtype, u);\n}\nvar i$ = { kernelName: xi, backendName: \"cpu\", kernelFunc: v5 };\nfunction k5(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { sparseIndices: n, sparseValues: s, defaultValue: a } = e, { outputShape: i } = o, { sliceRank: p, numUpdates: u, sliceSize: c, strides: l, outputSize: m } = S.calculateShapes(s, n, i), d = false, f = t10.bufferSync(n), h;\n switch (s.dtype) {\n case \"bool\": {\n let g = t10.bufferSync(s), x = Boolean(t10.data.get(a.dataId).values[0]);\n h = Va(f, g, i, m, c, u, p, l, x, d);\n break;\n }\n case \"float32\": {\n let g = t10.bufferSync(s), x = t10.data.get(a.dataId).values[0];\n h = Va(f, g, i, m, c, u, p, l, x, d);\n break;\n }\n case \"int32\": {\n let g = t10.bufferSync(s), x = t10.data.get(a.dataId).values[0];\n h = Va(f, g, i, m, c, u, p, l, x, d);\n break;\n }\n case \"string\": {\n let g = t10.bufferSync(s), x = y.decodeString(t10.data.get(a.dataId).values[0]);\n h = Va(f, g, i, m, c, u, p, l, x, d);\n break;\n }\n default:\n throw new Error(`Unsupported type ${s.dtype}`);\n }\n return t10.makeTensorInfo(i, h.dtype, h.values);\n}\nvar u$ = { kernelName: yi, backendName: \"cpu\", kernelFunc: k5 };\nfunction N5(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { numOrSizeSplits: s, axis: a } = o, i = y.parseAxisParam(a, n.shape)[0], p = S.prepareSplitSize(n, s, i), u = new Array(n.shape.length).fill(0), c = n.shape.slice();\n return p.map((l) => {\n let m = [...c];\n m[i] = l;\n let d = To({ inputs: { x: n }, backend: t10, attrs: { begin: u, size: m } });\n return u[i] += l, d;\n });\n}\nvar p$ = { kernelName: Rs, backendName: \"cpu\", kernelFunc: N5 };\nvar c$ = { kernelName: bi, backendName: \"cpu\", kernelFunc: ({ inputs: r, backend: e }) => {\n let { x: t10 } = r, o = e;\n j(t10, \"square\");\n let n = o.data.get(t10.dataId).values, s = new Float32Array(n.length);\n for (let i = 0; i < n.length; ++i) {\n let p = n[i];\n s[i] = p * p;\n }\n return { dataId: o.write(s, t10.shape, t10.dtype), shape: t10.shape, dtype: t10.dtype };\n} };\nvar T5 = we(fo, (r, e) => {\n let t10 = e;\n return isNaN(r) ? NaN : r > 0 ? 1 : t10.alpha;\n});\nvar l$ = { kernelName: fo, backendName: \"cpu\", kernelFunc: T5 };\nfunction _5(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { begin: s, end: a, strides: i, beginMask: p, endMask: u, ellipsisMask: c, newAxisMask: l, shrinkAxisMask: m } = o;\n j(n, \"stridedSlice\");\n let { finalShapeSparse: d, finalShape: f, isIdentity: h, sliceDim0: g, isSimpleSlice: x, begin: b, end: C, strides: w } = ut.sliceInfo(n.shape, s, a, i, p, u, c, l, m), k;\n if (h)\n k = Le({ inputs: { x: n }, backend: t10, attrs: { shape: f } });\n else if (g || x) {\n y.assert(n.shape.length >= 1, () => `Input must have rank at least 1, got: ${n.shape.length}`);\n let _ = ut.computeOutShape(b, C, w), E = To({ inputs: { x: n }, backend: t10, attrs: { begin: b, size: _ } });\n k = Le({ inputs: { x: E }, backend: t10, attrs: { shape: f } }), t10.disposeIntermediateTensorInfo(E);\n } else {\n let _ = t10.bufferSync(n), E = yf(d, _, w, b);\n k = t10.makeTensorInfo(f, E.dtype, E.values);\n }\n return k;\n}\nvar m$ = { kernelName: Xn, backendName: \"cpu\", kernelFunc: _5 };\nfunction $5(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { separator: n, nGramWidths: s, leftPad: a, rightPad: i, padWidth: p, preserveShortSequences: u } = o, { data: c, dataSplits: l } = e, m = t10.data.get(c.dataId).values, d = t10.data.get(l.dataId).values, [f, h] = Eu(m, d, n, s, a, i, p, u);\n return [t10.makeTensorInfo([f.length], \"string\", f), t10.makeTensorInfo(l.shape, \"int32\", h)];\n}\nvar d$ = { kernelName: Ds, backendName: \"cpu\", kernelFunc: $5 };\nfunction E5(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { skipEmpty: n } = o, { input: s, delimiter: a } = e;\n if (s.dtype !== \"string\")\n throw new Error(\"Input must be of datatype string\");\n if (s.shape.length !== 1)\n throw new Error(`Input must be a vector, got shape: ${s.shape}`);\n if (a.shape.length !== 0)\n throw new Error(`Delimiter must be a scalar, got shape: ${a.shape}`);\n let i = t10.data.get(s.dataId).values, p = t10.data.get(a.dataId).values[0], [u, c, l] = Au(i, p, n), m = c.length;\n return [t10.makeTensorInfo([m, 2], \"int32\", u), t10.makeTensorInfo([m], \"string\", c), t10.makeTensorInfo([2], \"int32\", new Int32Array(l))];\n}\nvar f$ = { kernelName: Ci, backendName: \"cpu\", kernelFunc: E5 };\nfunction A5(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { numBuckets: n } = o, { input: s } = e;\n if (s.dtype !== \"string\")\n throw new Error(\"Input must be of datatype string\");\n if (n <= 0)\n throw new Error(\"Number of buckets must be at least 1\");\n let a = t10.data.get(s.dataId).values, i = Ru(a, n);\n return t10.makeTensorInfo(s.shape, \"int32\", i);\n}\nvar h$ = { kernelName: Si, backendName: \"cpu\", kernelFunc: A5 };\nvar R5 = we(Qn, (r) => Math.tan(r));\nvar g$ = { kernelName: Qn, backendName: \"cpu\", kernelFunc: R5 };\nvar D5 = we(Zn, (r) => Math.tanh(r));\nvar x$ = { kernelName: Zn, backendName: \"cpu\", kernelFunc: D5 };\nfunction F5(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { reps: s } = o;\n j(n, \"tile\");\n let a = bf(t10.bufferSync(n), s);\n return t10.makeTensorInfo(a.shape, a.dtype, a.values);\n}\nvar y$ = { kernelName: to, backendName: \"cpu\", kernelFunc: F5 };\nfunction O5(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { k: s, sorted: a } = o;\n j(n, \"topk\");\n let i = t10.data.get(n.dataId).values, [p, u] = Cf(i, n.shape, n.dtype, s, a);\n return [t10.makeTensorInfo(p.shape, p.dtype, p.values), t10.makeTensorInfo(u.shape, u.dtype, u.values)];\n}\nvar b$ = { kernelName: Jn, backendName: \"cpu\", kernelFunc: O5 };\nfunction P5(r) {\n let { inputs: e, attrs: t10, backend: o } = r, { image: n, transforms: s } = e, { interpolation: a, fillMode: i, fillValue: p, outputShape: u } = t10, [c, l, m, d] = n.shape, [f, h] = u != null ? u : [l, m], g = [c, f, h, d], x = y.computeStrides(n.shape), b = x[0], C = x[1], w = x[2], k = y.computeStrides(g), _ = k[0], E = k[1], A = k[2], R = y.getTypedArrayFromDType(n.dtype, y.sizeFromShape(g));\n R.fill(p);\n let D = o.data.get(n.dataId).values, P = o.data.get(s.dataId).values;\n for (let L = 0; L < c; ++L) {\n let V = s.shape[0] === 1 ? P : P.subarray(L * 8, L * 8 + 8);\n for (let z = 0; z < f; ++z)\n for (let U = 0; U < h; ++U)\n for (let K = 0; K < d; ++K) {\n let H, q = V[6] * U + V[7] * z + 1;\n if (q === 0)\n continue;\n let Z = (V[0] * U + V[1] * z + V[2]) / q, ee = (V[3] * U + V[4] * z + V[5]) / q, oe = C$(Z, m, i), J = C$(ee, l, i);\n switch (a) {\n case \"nearest\":\n H = z5(D, l, m, b, C, w, L, J, oe, K, p);\n break;\n case \"bilinear\":\n H = W5(D, l, m, b, C, w, L, J, oe, K, p);\n break;\n default:\n throw new Error(`Error in Transform: Expect 'nearest' or 'bilinear', but got ${a}`);\n }\n let te = L * _ + z * E + U * A + K;\n R[te] = H;\n }\n return o.makeTensorInfo(g, n.dtype, R);\n }\n return { dataId: o.write(R, g, n.dtype), shape: n.shape, dtype: n.dtype };\n}\nvar S$ = { kernelName: es, backendName: \"cpu\", kernelFunc: P5 };\nfunction C$(r, e, t10) {\n switch (t10) {\n case \"reflect\":\n return M5(r, e);\n case \"wrap\":\n return L5(r, e);\n case \"nearest\":\n return V5(r, e);\n case \"constant\":\n default:\n return B5(r, e);\n }\n}\nfunction M5(r, e) {\n let t10 = r;\n if (t10 < 0)\n if (e <= 1)\n t10 = 0;\n else {\n let o = 2 * e;\n t10 < o && (t10 = o * Math.trunc(-t10 / o) + t10), t10 = t10 < -e ? t10 + o : -t10 - 1;\n }\n else if (t10 > e - 1)\n if (e <= 1)\n t10 = 0;\n else {\n let o = 2 * e;\n t10 -= o * Math.trunc(t10 / o), t10 >= e && (t10 = o - t10 - 1);\n }\n return y.clamp(0, t10, e - 1);\n}\nfunction L5(r, e) {\n let t10 = r;\n if (t10 < 0)\n if (e <= 1)\n t10 = 0;\n else {\n let o = e - 1;\n t10 += e * (Math.trunc(-t10 / o) + 1);\n }\n else if (t10 > e - 1)\n if (e <= 1)\n t10 = 0;\n else {\n let o = e - 1;\n t10 -= e * Math.trunc(t10 / o);\n }\n return y.clamp(0, t10, e - 1);\n}\nfunction B5(r, e) {\n return r;\n}\nfunction V5(r, e) {\n return y.clamp(0, r, e - 1);\n}\nfunction wl(r, e, t10, o, n, s, a, i, p, u, c) {\n let l = a * o + i * n + p * s + u;\n return 0 <= i && i < e && 0 <= p && p < t10 ? r[l] : c;\n}\nfunction z5(r, e, t10, o, n, s, a, i, p, u, c) {\n let l = Math.round(i), m = Math.round(p);\n return wl(r, e, t10, o, n, s, a, l, m, u, c);\n}\nfunction W5(r, e, t10, o, n, s, a, i, p, u, c) {\n let l = Math.floor(i), m = Math.floor(p), d = l + 1, f = m + 1, h = (f - p) * wl(r, e, t10, o, n, s, a, l, m, u, c) + (p - m) * wl(r, e, t10, o, n, s, a, l, f, u, c), g = (f - p) * wl(r, e, t10, o, n, s, a, d, m, u, c) + (p - m) * wl(r, e, t10, o, n, s, a, d, f, u, c);\n return (d - i) * h + (i - l) * g;\n}\nfunction U5(r) {\n let { inputs: e, attrs: t10, backend: o } = r, { axis: n } = t10, { x: s } = e;\n j(s, \"unique\");\n let a = o.data.get(s.dataId).values, { outputValues: i, outputShape: p, indices: u } = Sf(a, n, s.shape, s.dtype);\n return [o.makeTensorInfo(p, s.dtype, i), o.makeTensorInfo([u.length], \"int32\", u)];\n}\nvar w$ = { kernelName: Np, backendName: \"cpu\", kernelFunc: U5 };\nfunction G5(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { value: n } = e, { axis: s } = o;\n s < 0 && (s += n.shape.length);\n let a = n.shape.length, i = n.shape[s], p = new Array(a - 1), u = 0;\n for (let d = 0; d < a; d++)\n d !== s && (p[u++] = n.shape[d]);\n let c = new Array(a).fill(0), l = n.shape.slice();\n l[s] = 1;\n let m = new Array(i);\n for (let d = 0; d < m.length; d++) {\n c[s] = d;\n let f = To({ inputs: { x: n }, backend: t10, attrs: { begin: c, size: l } });\n m[d] = Le({ inputs: { x: f }, backend: t10, attrs: { shape: p } }), t10.disposeIntermediateTensorInfo(f);\n }\n return m;\n}\nvar I$ = { kernelName: Fs, backendName: \"cpu\", kernelFunc: G5 };\nfunction H5(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, segmentIds: s } = e, { numSegments: a } = o;\n j(n, \"unsortedSegmentSum\");\n let i = n.shape.length, p = s.shape.length, u = [], c = [], l = i - p, m = s;\n for (let f = 0; f < l; ++f) {\n let h = ec({ inputs: { input: m }, backend: t10, attrs: { dim: f + 1 } });\n m = h, c.push(h);\n }\n for (let f = 0; f < a; ++f) {\n let h = y.createScalarValue(f, \"int32\"), g = t10.makeTensorInfo([], \"int32\", h), x = lS({ inputs: { a: g, b: m }, backend: t10 }), b = vo({ inputs: { x }, backend: t10, attrs: { dtype: \"float32\" } }), C = Tu({ inputs: { a: b, b: n }, backend: t10 }), w = za({ inputs: { x: C }, backend: t10, attrs: { axis: 0, keepDims: false } });\n u.push(w), c.push(g), c.push(x), c.push(b), c.push(C), c.push(w);\n }\n let d = WS({ inputs: u, backend: t10, attrs: { axis: 0 } });\n return c.forEach((f) => t10.disposeIntermediateTensorInfo(f)), d;\n}\nvar v$ = { kernelName: Tp, backendName: \"cpu\", kernelFunc: H5 };\nvar K5 = [YT, iT, QT, ZT, mT, JT, e2, t2, r2, o2, n2, s2, a2, i2, u2, c2, l2, m2, d2, XT, f2, h2, g2, x2, lT, dT, y2, uT, b2, S2, w2, I2, v2, k2, N2, T2, _2, $2, E2, A2, R2, D2, F2, O2, P2, M2, L2, B2, V2, z2, U2, UT, G2, fT, H2, hT, K2, gT, q2, j2, X2, xT, Y2, Q2, Z2, J2, e_, yT, bT, pT, t_, C2, r_, o_, n_, GT, CT, ST, s_, wT, a_, i_, u_, p_, c_, l_, m_, IT, d_, f_, h_, g_, y_, b_, C_, vT, S_, w_, k_, kT, NT, N_, T_, __, TT, $_, R_, D_, kf, F_, HT, $T, O_, P_, M_, L_, cT, bl, B_, KT, qT, jT, V_, z_, W_, U_, G_, H_, K_, FT, q_, X_, Y_, Q_, PT, Z_, J_, e$, MT, I_, r$, o$, n$, s$, a$, i$, u$, p$, BT, c$, VT, l$, m$, d$, f$, h$, zT, W2, g$, x$, y$, b$, S$, _T, w$, I$, v$, E_];\nfor (let r of K5)\n ka(r);\nvar nc = {};\nGe(nc, { assertNotComplex: () => us, bindCanvasToFramebuffer: () => t8, bindColorTextureToFramebuffer: () => Nl, bindTextureToProgramUniformSampler: () => nw, bindTextureUnit: () => _$, bindVertexBufferToProgramAttribute: () => Af, callAndCheck: () => pe, canBeRepresented: () => KS, createFragmentShader: () => jS, createFramebuffer: () => tw, createProgram: () => XS, createStaticIndexBuffer: () => ZS, createStaticVertexBuffer: () => QS, createTexture: () => JS, createVertexShader: () => qS, getBatchDim: () => Ua, getExtensionOrThrow: () => tc, getFramebufferErrorMessage: () => $$, getMaxTexturesInShader: () => iw, getNumChannels: () => J5, getProgramUniformLocation: () => ow, getProgramUniformLocationOrThrow: () => rw, getRowsCols: () => Ga, getShapeAs3D: () => oc, getTextureShapeFromLogicalShape: () => sw, getWebGLDisjointQueryTimerVersion: () => uw, getWebGLErrorMessage: () => T$, getWebGLMaxTextureSize: () => aw, hasExtension: () => Wr, isCapableOfRenderingToFloatTexture: () => pw, isDownloadFloatTextureEnabled: () => cw, isReshapeFree: () => Bi, isWebGLFenceEnabled: () => lw, isWebGLVersionEnabled: () => Df, linkProgram: () => YS, logShaderSourceAndInfoLog: () => Ef, resetMaxTextureSize: () => r8, resetMaxTexturesInShader: () => o8, unbindColorTextureFromFramebuffer: () => Rf, unbindTextureUnit: () => e8, validateFramebuffer: () => rc, validateProgram: () => kl, validateTextureSize: () => ew });\nvar Fu = {};\nvar Nf = { alpha: false, antialias: false, premultipliedAlpha: false, preserveDrawingBuffer: false, depth: false, stencil: false, failIfMajorPerformanceCaveat: true };\nfunction US(r, e) {\n Fu[r] = e;\n}\nfunction zr(r, e) {\n if (!(r in Fu) || e != null) {\n let o = j5(r, e);\n if (o !== null)\n Fu[r] = o;\n else\n return console.log(\"Could not get context for WebGL version\", r), null;\n }\n let t10 = Fu[r];\n return t10 == null || t10.isContextLost() ? (delete Fu[r], zr(r)) : (t10.disable(t10.DEPTH_TEST), t10.disable(t10.STENCIL_TEST), t10.disable(t10.BLEND), t10.disable(t10.DITHER), t10.disable(t10.POLYGON_OFFSET_FILL), t10.disable(t10.SAMPLE_COVERAGE), t10.enable(t10.SCISSOR_TEST), t10.enable(t10.CULL_FACE), t10.cullFace(t10.BACK), Fu[r]);\n}\nfunction q5(r) {\n if (typeof OffscreenCanvas != \"undefined\" && r === 2)\n return new OffscreenCanvas(300, 150);\n if (typeof document != \"undefined\")\n return document.createElement(\"canvas\");\n throw new Error(\"Cannot create a canvas in this context\");\n}\nfunction j5(r, e) {\n if (r !== 1 && r !== 2)\n throw new Error(\"Cannot get WebGL rendering context, WebGL is disabled.\");\n let t10 = e == null ? q5(r) : e;\n return t10.addEventListener(\"webglcontextlost\", (o) => {\n o.preventDefault(), delete Fu[r];\n }, false), O().getBool(\"SOFTWARE_WEBGL_ENABLED\") && (Nf.failIfMajorPerformanceCaveat = false), r === 1 ? t10.getContext(\"webgl\", Nf) || t10.getContext(\"experimental-webgl\", Nf) : t10.getContext(\"webgl2\", Nf);\n}\nvar Li;\n(function(r) {\n r[r.DENSE = 0] = \"DENSE\", r[r.SHARED_BATCH = 1] = \"SHARED_BATCH\";\n})(Li || (Li = {}));\nvar ur;\n(function(r) {\n r[r.RENDER = 0] = \"RENDER\", r[r.UPLOAD = 1] = \"UPLOAD\", r[r.PIXELS = 2] = \"PIXELS\", r[r.DOWNLOAD = 3] = \"DOWNLOAD\";\n})(ur || (ur = {}));\nvar Zt;\n(function(r) {\n r[r.UNPACKED_FLOAT16 = 0] = \"UNPACKED_FLOAT16\", r[r.UNPACKED_FLOAT32 = 1] = \"UNPACKED_FLOAT32\", r[r.PACKED_4X1_UNSIGNED_BYTE = 2] = \"PACKED_4X1_UNSIGNED_BYTE\", r[r.PACKED_2X2_FLOAT32 = 3] = \"PACKED_2X2_FLOAT32\", r[r.PACKED_2X2_FLOAT16 = 4] = \"PACKED_2X2_FLOAT16\";\n})(Zt || (Zt = {}));\nfunction Ou(r, e) {\n return [e, r];\n}\nfunction k$(r, e) {\n return r * e;\n}\nfunction Il(r) {\n let e = y.sizeFromShape(r), t10 = Math.ceil(e / 4);\n return y.sizeToSquarishShape(t10);\n}\nfunction Qs(r, e) {\n return [Math.max(1, Math.ceil(e / 2)), Math.max(1, Math.ceil(r / 2))];\n}\nfunction N$(r, e) {\n let [t10, o] = Qs(r, e);\n return t10 * o * 4;\n}\nfunction vl(r, e) {\n let t10 = r, o, n, s, a, i, p, u, c, l, m;\n return O().getNumber(\"WEBGL_VERSION\") === 2 ? (o = t10.R32F, n = t10.R16F, s = t10.RGBA16F, a = t10.RGBA32F, i = t10.RED, u = 4, c = 1, l = t10.HALF_FLOAT, m = t10.FLOAT, p = t10.RGBA8) : (o = r.RGBA, n = r.RGBA, s = r.RGBA, a = t10.RGBA, i = r.RGBA, u = 4, c = 4, l = e != null ? e.HALF_FLOAT_OES : null, m = r.FLOAT, p = r.RGBA), { internalFormatFloat: o, internalFormatHalfFloat: n, internalFormatPackedHalfFloat: s, internalFormatPackedFloat: a, textureFormatFloat: i, downloadTextureFormat: p, downloadUnpackNumChannels: u, defaultNumChannels: c, textureTypeHalfFloat: l, textureTypeFloat: m };\n}\nfunction pe(r, e) {\n let t10 = e();\n return O().getBool(\"DEBUG\") && X5(r), t10;\n}\nfunction X5(r) {\n let e = r.getError();\n if (e !== r.NO_ERROR)\n throw new Error(\"WebGL Error: \" + T$(r, e));\n}\nvar Y5 = 596e-10;\nvar Q5 = 65504;\nfunction KS(r) {\n return !!(O().getBool(\"WEBGL_RENDER_FLOAT32_ENABLED\") || r === 0 || Y5 < Math.abs(r) && Math.abs(r) < Q5);\n}\nfunction T$(r, e) {\n switch (e) {\n case r.NO_ERROR:\n return \"NO_ERROR\";\n case r.INVALID_ENUM:\n return \"INVALID_ENUM\";\n case r.INVALID_VALUE:\n return \"INVALID_VALUE\";\n case r.INVALID_OPERATION:\n return \"INVALID_OPERATION\";\n case r.INVALID_FRAMEBUFFER_OPERATION:\n return \"INVALID_FRAMEBUFFER_OPERATION\";\n case r.OUT_OF_MEMORY:\n return \"OUT_OF_MEMORY\";\n case r.CONTEXT_LOST_WEBGL:\n return \"CONTEXT_LOST_WEBGL\";\n default:\n return `Unknown error code ${e}`;\n }\n}\nfunction tc(r, e) {\n return Wa(r, () => r.getExtension(e), 'Extension \"' + e + '\" not supported on this browser.');\n}\nfunction qS(r, e) {\n let t10 = Wa(r, () => r.createShader(r.VERTEX_SHADER), \"Unable to create vertex WebGLShader.\");\n if (pe(r, () => r.shaderSource(t10, e)), pe(r, () => r.compileShader(t10)), r.getShaderParameter(t10, r.COMPILE_STATUS) === false)\n throw console.log(r.getShaderInfoLog(t10)), new Error(\"Failed to compile vertex shader.\");\n return t10;\n}\nfunction jS(r, e) {\n let t10 = Wa(r, () => r.createShader(r.FRAGMENT_SHADER), \"Unable to create fragment WebGLShader.\");\n if (pe(r, () => r.shaderSource(t10, e)), pe(r, () => r.compileShader(t10)), O().get(\"ENGINE_COMPILE_ONLY\"))\n return t10;\n if (r.getShaderParameter(t10, r.COMPILE_STATUS) === false)\n throw Ef(e, r.getShaderInfoLog(t10)), new Error(\"Failed to compile fragment shader.\");\n return t10;\n}\nvar Z5 = /ERROR: [0-9]+:([0-9]+):/g;\nfunction Ef(r, e) {\n let t10 = Z5.exec(e);\n if (t10 == null) {\n console.log(`Couldn't parse line number in error: ${e}`), console.log(r);\n return;\n }\n let o = +t10[1], n = r.split(`\n`), s = n.length.toString().length + 2, a = n.map((l, m) => y.rightPad((m + 1).toString(), s) + l), i = 0;\n for (let l = 0; l < a.length; l++)\n i = Math.max(a[l].length, i);\n let p = a.slice(0, o - 1), u = a.slice(o - 1, o), c = a.slice(o);\n console.log(p.join(`\n`)), console.log(e.split(`\n`)[0]), console.log(`%c ${y.rightPad(u[0], i)}`, \"border:1px solid red; background-color:#e3d2d2; color:#a61717\"), console.log(c.join(`\n`));\n}\nfunction XS(r) {\n return Wa(r, () => r.createProgram(), \"Unable to create WebGLProgram.\");\n}\nfunction YS(r, e) {\n if (pe(r, () => r.linkProgram(e)), !O().get(\"ENGINE_COMPILE_ONLY\") && r.getProgramParameter(e, r.LINK_STATUS) === false)\n throw console.log(r.getProgramInfoLog(e)), new Error(\"Failed to link vertex and fragment shaders.\");\n}\nfunction kl(r, e) {\n if (pe(r, () => r.validateProgram(e)), r.getProgramParameter(e, r.VALIDATE_STATUS) === false)\n throw console.log(r.getProgramInfoLog(e)), new Error(\"Shader program validation failed.\");\n}\nfunction QS(r, e) {\n let t10 = Wa(r, () => r.createBuffer(), \"Unable to create WebGLBuffer\");\n return pe(r, () => r.bindBuffer(r.ARRAY_BUFFER, t10)), pe(r, () => r.bufferData(r.ARRAY_BUFFER, e, r.STATIC_DRAW)), t10;\n}\nfunction ZS(r, e) {\n let t10 = Wa(r, () => r.createBuffer(), \"Unable to create WebGLBuffer\");\n return pe(r, () => r.bindBuffer(r.ELEMENT_ARRAY_BUFFER, t10)), pe(r, () => r.bufferData(r.ELEMENT_ARRAY_BUFFER, e, r.STATIC_DRAW)), t10;\n}\nfunction J5() {\n return O().getNumber(\"WEBGL_VERSION\") === 2 ? 1 : 4;\n}\nfunction JS(r) {\n return Wa(r, () => r.createTexture(), \"Unable to create WebGLTexture.\");\n}\nfunction ew(r, e) {\n let t10 = O().getNumber(\"WEBGL_MAX_TEXTURE_SIZE\");\n if (r <= 0 || e <= 0) {\n let o = `[${r}x${e}]`;\n throw new Error(\"Requested texture size \" + o + \" is invalid.\");\n }\n if (r > t10 || e > t10) {\n let o = `[${r}x${e}]`, n = `[${t10}x${t10}]`;\n throw new Error(\"Requested texture size \" + o + \" greater than WebGL maximum on this browser / GPU \" + n + \".\");\n }\n}\nfunction tw(r) {\n return Wa(r, () => r.createFramebuffer(), \"Unable to create WebGLFramebuffer.\");\n}\nfunction Af(r, e, t10, o, n, s, a) {\n let i = r.getAttribLocation(e, t10);\n return i === -1 ? false : (pe(r, () => r.bindBuffer(r.ARRAY_BUFFER, o)), pe(r, () => r.vertexAttribPointer(i, n, r.FLOAT, false, s, a)), pe(r, () => r.enableVertexAttribArray(i)), true);\n}\nfunction _$(r, e, t10) {\n E$(r, t10), pe(r, () => r.activeTexture(r.TEXTURE0 + t10)), pe(r, () => r.bindTexture(r.TEXTURE_2D, e));\n}\nfunction e8(r, e) {\n E$(r, e), pe(r, () => r.activeTexture(r.TEXTURE0 + e)), pe(r, () => r.bindTexture(r.TEXTURE_2D, null));\n}\nfunction rw(r, e, t10) {\n return Wa(r, () => r.getUniformLocation(e, t10), 'uniform \"' + t10 + '\" not present in program.');\n}\nfunction ow(r, e, t10) {\n return r.getUniformLocation(e, t10);\n}\nfunction nw(r, e, t10, o) {\n pe(r, () => _$(r, e, o)), pe(r, () => r.uniform1i(t10, o));\n}\nfunction t8(r) {\n pe(r, () => r.bindFramebuffer(r.FRAMEBUFFER, null)), pe(r, () => r.viewport(0, 0, r.canvas.width, r.canvas.height)), pe(r, () => r.scissor(0, 0, r.canvas.width, r.canvas.height));\n}\nfunction Nl(r, e, t10) {\n pe(r, () => r.bindFramebuffer(r.FRAMEBUFFER, t10)), pe(r, () => r.framebufferTexture2D(r.FRAMEBUFFER, r.COLOR_ATTACHMENT0, r.TEXTURE_2D, e, 0));\n}\nfunction Rf(r, e) {\n pe(r, () => r.bindFramebuffer(r.FRAMEBUFFER, e)), pe(r, () => r.framebufferTexture2D(r.FRAMEBUFFER, r.COLOR_ATTACHMENT0, r.TEXTURE_2D, null, 0));\n}\nfunction rc(r) {\n let e = r.checkFramebufferStatus(r.FRAMEBUFFER);\n if (e !== r.FRAMEBUFFER_COMPLETE)\n throw new Error(\"Error binding framebuffer: \" + $$(r, e));\n}\nfunction $$(r, e) {\n switch (e) {\n case r.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:\n return \"FRAMEBUFFER_INCOMPLETE_ATTACHMENT\";\n case r.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:\n return \"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT\";\n case r.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:\n return \"FRAMEBUFFER_INCOMPLETE_DIMENSIONS\";\n case r.FRAMEBUFFER_UNSUPPORTED:\n return \"FRAMEBUFFER_UNSUPPORTED\";\n default:\n return `unknown error ${e}`;\n }\n}\nfunction Wa(r, e, t10) {\n let o = pe(r, () => e());\n if (o == null)\n throw new Error(t10);\n return o;\n}\nfunction E$(r, e) {\n let t10 = r.MAX_COMBINED_TEXTURE_IMAGE_UNITS - 1, o = e + r.TEXTURE0;\n if (o < r.TEXTURE0 || o > t10) {\n let n = `[gl.TEXTURE0, gl.TEXTURE${t10}]`;\n throw new Error(`textureUnit must be in ${n}.`);\n }\n}\nfunction Ua(r, e = 2) {\n return y.sizeFromShape(r.slice(0, r.length - e));\n}\nfunction Ga(r) {\n if (r.length === 0)\n throw Error(\"Cannot get rows and columns of an empty shape array.\");\n return [r.length > 1 ? r[r.length - 2] : 1, r[r.length - 1]];\n}\nfunction oc(r) {\n let e = [1, 1, 1];\n return r.length === 0 || r.length === 1 && r[0] === 1 || (e = [Ua(r), ...Ga(r)]), e;\n}\nfunction sw(r, e = false) {\n let t10 = O().getNumber(\"WEBGL_MAX_TEXTURE_SIZE\"), o = O().getNumber(\"WEBGL_MAX_SIZE_FOR_NARROW_TEXTURE\");\n o === 1 / 0 && O().getBool(\"WEBGL_AUTO_SQUARIFY_NARROW_TEXTURE_SHAPE\") && (o = t10 / 2), e && (t10 = t10 * 2, o = o * 2, r = r.map((i, p) => p >= r.length - 2 ? y.nearestLargerEven(r[p]) : r[p]), r.length === 1 && (r = [2, r[0]])), r.length !== 2 && (r = y.squeezeShape(r).newShape);\n let n = y.sizeFromShape(r), s = null;\n r.length <= 1 && n <= t10 ? s = [1, n] : r.length === 2 && r[0] <= t10 && r[1] <= t10 ? s = r : r.length === 3 && r[0] * r[1] <= t10 && r[2] <= t10 ? s = [r[0] * r[1], r[2]] : r.length === 3 && r[0] <= t10 && r[1] * r[2] <= t10 ? s = [r[0], r[1] * r[2]] : r.length === 4 && r[0] * r[1] * r[2] <= t10 && r[3] <= t10 ? s = [r[0] * r[1] * r[2], r[3]] : r.length === 4 && r[0] <= t10 && r[1] * r[2] * r[3] <= t10 && (s = [r[0], r[1] * r[2] * r[3]]);\n let a = s != null && Math.max(...s) > o && Math.min(...s) <= (e ? 2 : 1) && Math.min(...s) > 0;\n if (s == null || a)\n if (e) {\n let i = Ua(r), p = 2, u = 2;\n r.length && ([p, u] = Ga(r)), n = i * (p / 2) * (u / 2), s = y.sizeToSquarishShape(n).map((c) => c * 2);\n } else\n s = y.sizeToSquarishShape(n);\n return s;\n}\nfunction Tf(r) {\n return r % 2 === 0;\n}\nfunction Bi(r, e) {\n if (r = r.slice(-2), e = e.slice(-2), y.arraysEqual(r, e) || !r.length || !e.length || r[0] === 0 || r[1] === 0 || e[0] === 0 || e[1] === 0)\n return true;\n if (r.length !== e.length) {\n let t10 = r.slice(-1)[0], o = e.slice(-1)[0];\n if (t10 === o || Tf(t10) && Tf(o) && (r[0] === 1 || e[0] === 1))\n return true;\n }\n return r[1] === e[1] && Tf(r[0]) && Tf(e[0]);\n}\nvar _f;\nvar $f;\nfunction aw(r) {\n if (_f == null) {\n let e = zr(r);\n _f = e.getParameter(e.MAX_TEXTURE_SIZE);\n }\n return _f;\n}\nfunction r8() {\n _f = null;\n}\nfunction o8() {\n $f = null;\n}\nfunction iw(r) {\n if ($f == null) {\n let e = zr(r);\n $f = e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS);\n }\n return Math.min(16, $f);\n}\nfunction uw(r) {\n if (r === 0)\n return 0;\n let e, t10 = zr(r);\n return Wr(t10, \"EXT_disjoint_timer_query_webgl2\") && r === 2 ? e = 2 : Wr(t10, \"EXT_disjoint_timer_query\") ? e = 1 : e = 0, e;\n}\nfunction Wr(r, e) {\n return r.getExtension(e) != null;\n}\nfunction Df(r) {\n try {\n if (zr(r) != null)\n return true;\n } catch (e) {\n return console.log(\"Error when getting WebGL context: \", e), false;\n }\n return false;\n}\nfunction pw(r) {\n if (r === 0)\n return false;\n let e = zr(r);\n if (r === 1) {\n if (!Wr(e, \"OES_texture_float\"))\n return false;\n } else if (!Wr(e, \"EXT_color_buffer_float\"))\n return false;\n return HS(e);\n}\nfunction cw(r) {\n if (r === 0)\n return false;\n let e = zr(r);\n if (r === 1) {\n if (!Wr(e, \"OES_texture_float\") || !Wr(e, \"WEBGL_color_buffer_float\"))\n return false;\n } else {\n if (Wr(e, \"EXT_color_buffer_float\"))\n return HS(e);\n let o = \"EXT_color_buffer_half_float\";\n if (Wr(e, o)) {\n let n = e.getExtension(o);\n return n8(e, n);\n }\n return false;\n }\n return HS(e);\n}\nfunction HS(r) {\n let e = vl(r), t10 = r.createTexture();\n r.bindTexture(r.TEXTURE_2D, t10);\n let o = 1, n = 1;\n r.texImage2D(r.TEXTURE_2D, 0, e.internalFormatFloat, o, n, 0, e.textureFormatFloat, e.textureTypeFloat, null);\n let s = r.createFramebuffer();\n r.bindFramebuffer(r.FRAMEBUFFER, s), r.framebufferTexture2D(r.FRAMEBUFFER, r.COLOR_ATTACHMENT0, r.TEXTURE_2D, t10, 0);\n let a = r.checkFramebufferStatus(r.FRAMEBUFFER) === r.FRAMEBUFFER_COMPLETE;\n return r.bindTexture(r.TEXTURE_2D, null), r.bindFramebuffer(r.FRAMEBUFFER, null), r.deleteTexture(t10), r.deleteFramebuffer(s), a;\n}\nfunction n8(r, e) {\n let t10 = vl(r, e), o = r.createTexture();\n r.bindTexture(r.TEXTURE_2D, o);\n let n = 1, s = 1;\n r.texImage2D(r.TEXTURE_2D, 0, t10.internalFormatHalfFloat, n, s, 0, t10.textureFormatFloat, t10.textureTypeHalfFloat, null);\n let a = r.createFramebuffer();\n r.bindFramebuffer(r.FRAMEBUFFER, a), r.framebufferTexture2D(r.FRAMEBUFFER, r.COLOR_ATTACHMENT0, r.TEXTURE_2D, o, 0);\n let i = r.checkFramebufferStatus(r.FRAMEBUFFER) === r.FRAMEBUFFER_COMPLETE;\n return r.bindTexture(r.TEXTURE_2D, null), r.bindFramebuffer(r.FRAMEBUFFER, null), r.deleteTexture(o), r.deleteFramebuffer(a), i;\n}\nfunction lw(r) {\n return r !== 2 ? false : zr(r).fenceSync != null;\n}\nfunction us(r, e) {\n Array.isArray(r) || (r = [r]), r.forEach((t10) => {\n t10 != null && y.assert(t10.dtype !== \"complex64\", () => `${e} does not support complex64 tensors in the WebGL backend.`);\n });\n}\nvar Se = O();\nSe.registerFlag(\"HAS_WEBGL\", () => Se.getNumber(\"WEBGL_VERSION\") > 0);\nSe.registerFlag(\"WEBGL_VERSION\", () => Df(2) ? 2 : Df(1) ? 1 : 0);\nSe.registerFlag(\"WEBGL_CHECK_NUMERICAL_PROBLEMS\", () => false);\nSe.registerFlag(\"WEBGL_BUFFER_SUPPORTED\", () => Se.get(\"WEBGL_VERSION\") === 2);\nSe.registerFlag(\"WEBGL_CPU_FORWARD\", () => true);\nSe.registerFlag(\"WEBGL_FORCE_F16_TEXTURES\", () => false);\nSe.registerFlag(\"WEBGL_PACK\", () => Se.getBool(\"HAS_WEBGL\"));\nSe.registerFlag(\"WEBGL_PACK_NORMALIZATION\", () => Se.getBool(\"WEBGL_PACK\"));\nSe.registerFlag(\"WEBGL_PACK_CLIP\", () => Se.getBool(\"WEBGL_PACK\"));\nSe.registerFlag(\"WEBGL_PACK_DEPTHWISECONV\", () => Se.getBool(\"WEBGL_PACK\"));\nSe.registerFlag(\"WEBGL_PACK_BINARY_OPERATIONS\", () => Se.getBool(\"WEBGL_PACK\"));\nSe.registerFlag(\"WEBGL_PACK_UNARY_OPERATIONS\", () => Se.getBool(\"WEBGL_PACK\"));\nSe.registerFlag(\"WEBGL_PACK_ARRAY_OPERATIONS\", () => Se.getBool(\"WEBGL_PACK\"));\nSe.registerFlag(\"WEBGL_PACK_IMAGE_OPERATIONS\", () => Se.getBool(\"WEBGL_PACK\"));\nSe.registerFlag(\"WEBGL_PACK_REDUCE\", () => Se.getBool(\"WEBGL_PACK\"));\nSe.registerFlag(\"WEBGL_LAZILY_UNPACK\", () => Se.getBool(\"WEBGL_PACK\"));\nSe.registerFlag(\"WEBGL_CONV_IM2COL\", () => Se.getBool(\"WEBGL_PACK\"));\nSe.registerFlag(\"WEBGL_MAX_TEXTURE_SIZE\", () => aw(Se.getNumber(\"WEBGL_VERSION\")));\nSe.registerFlag(\"WEBGL_MAX_TEXTURES_IN_SHADER\", () => iw(Se.getNumber(\"WEBGL_VERSION\")));\nSe.registerFlag(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION\", () => {\n let r = Se.getNumber(\"WEBGL_VERSION\");\n return r === 0 ? 0 : uw(r);\n});\nSe.registerFlag(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE\", () => Se.getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION\") > 0 && !ki.isMobile());\nSe.registerFlag(\"WEBGL_RENDER_FLOAT32_CAPABLE\", () => pw(Se.getNumber(\"WEBGL_VERSION\")));\nSe.registerFlag(\"WEBGL_RENDER_FLOAT32_ENABLED\", () => Se.getBool(\"WEBGL_FORCE_F16_TEXTURES\") ? false : Se.getBool(\"WEBGL_RENDER_FLOAT32_CAPABLE\"));\nSe.registerFlag(\"WEBGL_DOWNLOAD_FLOAT_ENABLED\", () => cw(Se.getNumber(\"WEBGL_VERSION\")));\nSe.registerFlag(\"WEBGL_FENCE_API_ENABLED\", () => lw(Se.getNumber(\"WEBGL_VERSION\")));\nSe.registerFlag(\"WEBGL_SIZE_UPLOAD_UNIFORM\", () => Se.getBool(\"WEBGL_RENDER_FLOAT32_ENABLED\") ? 4 : 0);\nSe.registerFlag(\"WEBGL_DELETE_TEXTURE_THRESHOLD\", () => -1, (r) => {\n if (r < 0 && r !== -1)\n throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${r}.`);\n});\nSe.registerFlag(\"WEBGL_FLUSH_THRESHOLD\", () => ki.isMobile() ? 1 : -1, (r) => {\n if (r < 0 && r !== -1)\n throw new Error(`WEBGL_FLUSH_THRESHOLD must be -1 (indicating never manual flush) or at least 0, but got ${r}.`);\n});\nSe.registerFlag(\"CPU_HANDOFF_SIZE_THRESHOLD\", () => 128);\nSe.registerFlag(\"WEBGL_USE_SHAPES_UNIFORMS\", () => false);\nSe.registerFlag(\"TOPK_LAST_DIM_CPU_HANDOFF_SIZE_THRESHOLD\", () => 1e5);\nSe.registerFlag(\"TOPK_K_CPU_HANDOFF_THRESHOLD\", () => 128);\nSe.registerFlag(\"WEBGL_EXP_CONV\", () => false);\nSe.registerFlag(\"SOFTWARE_WEBGL_ENABLED\", () => Se.getBool(\"IS_TEST\"));\nSe.registerFlag(\"WEBGL_MAX_SIZE_FOR_NARROW_TEXTURE\", () => 1 / 0);\nSe.registerFlag(\"WEBGL_AUTO_SQUARIFY_NARROW_TEXTURE_SHAPE\", () => false);\nSe.registerFlag(\"WEBGL2_ISNAN_CUSTOM\", () => false);\nSe.registerFlag(\"ENGINE_COMPILE_ONLY\", () => false);\nfunction wt() {\n let r, e, t10, o, n, s, a, i, p, u;\n return O().getNumber(\"WEBGL_VERSION\") === 2 ? (r = \"#version 300 es\", e = \"in\", t10 = \"out\", o = \"in\", n = \"texture\", s = \"outputColor\", a = \"out vec4 outputColor;\", i = O().getBool(\"WEBGL2_ISNAN_CUSTOM\") ? `\n bool isnan_custom(float val) {\n uint floatToUint = floatBitsToUint(val);\n return (floatToUint & 0x7fffffffu) > 0x7f800000u;\n }\n\n bvec4 isnan_custom(vec4 val) {\n return bvec4(isnan_custom(val.x),\n isnan_custom(val.y), isnan_custom(val.z), isnan_custom(val.w));\n }\n\n #define isnan(value) isnan_custom(value)\n ` : \"\", p = \"\", u = `\n #define round(value) newRound(value)\n int newRound(float value) {\n return int(floor(value + 0.5));\n }\n\n ivec4 newRound(vec4 value) {\n return ivec4(floor(value + vec4(0.5)));\n }\n `) : (r = \"\", e = \"attribute\", t10 = \"varying\", o = \"varying\", n = \"texture2D\", s = \"gl_FragColor\", a = \"\", i = `\n #define isnan(value) isnan_custom(value)\n bool isnan_custom(float val) {\n return (val > 0. || val < 1. || val == 0.) ? false : true;\n }\n bvec4 isnan_custom(vec4 val) {\n return bvec4(isnan(val.x), isnan(val.y), isnan(val.z), isnan(val.w));\n }\n `, p = `\n uniform float INFINITY;\n\n bool isinf(float val) {\n return abs(val) == INFINITY;\n }\n bvec4 isinf(vec4 val) {\n return equal(abs(val), vec4(INFINITY));\n }\n `, u = `\n int round(float value) {\n return int(floor(value + 0.5));\n }\n\n ivec4 round(vec4 value) {\n return ivec4(floor(value + vec4(0.5)));\n }\n `), { version: r, attribute: e, varyingVs: t10, varyingFs: o, texture2D: n, output: s, defineOutput: a, defineSpecialNaN: i, defineSpecialInf: p, defineRound: u };\n}\nfunction ps(r, e, t10 = \"index\") {\n let o = y.computeStrides(e);\n return o.map((n, s) => {\n let a = `int ${r[s]} = ${t10} / ${n}`, i = s === o.length - 1 ? `int ${r[s + 1]} = ${t10} - ${r[s]} * ${n}` : `index -= ${r[s]} * ${n}`;\n return `${a}; ${i};`;\n }).join(\"\");\n}\nfunction Pu(r, e, t10 = \"index\") {\n let o = y.computeStrides(e);\n return o.map((n, s) => {\n let a = `int ${r[s]} = ${t10} / outShapeStrides[${s}]`, i = s === o.length - 1 ? `int ${r[s + 1]} = ${t10} - ${r[s]} * outShapeStrides[${s}]` : `index -= ${r[s]} * outShapeStrides[${s}]`;\n return `${a}; ${i};`;\n }).join(\"\");\n}\nfunction s8(r, e) {\n let t10 = r.length, o = r.map((s) => `${e}[${s}]`), n = new Array(t10 - 1);\n n[t10 - 2] = o[t10 - 1];\n for (let s = t10 - 3; s >= 0; --s)\n n[s] = `(${n[s + 1]} * ${o[s + 1]})`;\n return n;\n}\nfunction A$(r, e, t10 = \"index\") {\n let o = r.map((s, a) => a), n = s8(o, e);\n return n.map((s, a) => {\n let i = `int ${r[a]} = ${t10} / ${n[a]}`, p = a === n.length - 1 ? `int ${r[a + 1]} = ${t10} - ${r[a]} * ${n[a]}` : `index -= ${r[a]} * ${n[a]}`;\n return `${i}; ${p};`;\n }).join(\"\");\n}\nfunction sc(r) {\n let e = y.computeStrides(r).map((t10) => t10.toString());\n return `\n int getFlatIndex(ivec3 coords) {\n return coords.x * ${e[0]} + coords.y * ${e[1]} + coords.z;\n }\n`;\n}\nfunction ac() {\n return `\n int getFlatIndex(ivec3 coords) {\n return coords.x * outShapeStrides[0] + coords.y * outShapeStrides[1] + coords.z;\n }\n`;\n}\nvar Ff = `\n const float FLOAT_MAX = 1.70141184e38;\n const float FLOAT_MIN = 1.17549435e-38;\n\n lowp vec4 encode_float(highp float v) {\n if (isnan(v)) {\n return vec4(255, 255, 255, 255);\n }\n\n highp float av = abs(v);\n\n if(av < FLOAT_MIN) {\n return vec4(0.0, 0.0, 0.0, 0.0);\n } else if(v > FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 127.0) / 255.0;\n } else if(v < -FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 255.0) / 255.0;\n }\n\n highp vec4 c = vec4(0,0,0,0);\n\n highp float e = floor(log2(av));\n highp float m = exp2(fract(log2(av))) - 1.0;\n\n c[2] = floor(128.0 * m);\n m -= c[2] / 128.0;\n c[1] = floor(32768.0 * m);\n m -= c[1] / 32768.0;\n c[0] = floor(8388608.0 * m);\n\n highp float ebias = e + 127.0;\n c[3] = floor(ebias / 2.0);\n ebias -= c[3] * 2.0;\n c[2] += floor(ebias) * 128.0;\n\n c[3] += 128.0 * step(0.0, -v);\n\n return c / 255.0;\n }\n`;\nvar { getBroadcastDims: R$ } = S;\nfunction D$(r, e, t10) {\n let o = [];\n if (r.forEach((d) => {\n let f = y.sizeFromShape(d.shapeInfo.logicalShape);\n if (d.shapeInfo.isUniform ? o.push(`uniform float ${d.name}${f > 1 ? `[${f}]` : \"\"};`) : (o.push(`uniform sampler2D ${d.name};`), o.push(`uniform int offset${d.name};`)), t10.enableShapeUniforms) {\n let { uniformShape: h } = Of(t10.packedInputs, d.shapeInfo.logicalShape, d.shapeInfo.texShape);\n switch (h.length) {\n case 1:\n o.push(`uniform int ${d.name}Shape;`);\n break;\n case 2:\n o.push(`uniform ivec2 ${d.name}Shape;`);\n break;\n case 3:\n o.push(`uniform ivec3 ${d.name}Shape;`);\n break;\n case 4:\n o.push(`uniform ivec4 ${d.name}Shape;`);\n break;\n default:\n break;\n }\n o.push(`uniform ivec2 ${d.name}TexShape;`);\n }\n }), t10.enableShapeUniforms) {\n switch (e.logicalShape.length) {\n case 1:\n o.push(\"uniform int outShape;\");\n break;\n case 2:\n o.push(\"uniform ivec2 outShape;\"), o.push(\"uniform int outShapeStrides;\");\n break;\n case 3:\n o.push(\"uniform ivec3 outShape;\"), o.push(\"uniform ivec2 outShapeStrides;\");\n break;\n case 4:\n o.push(\"uniform ivec4 outShape;\"), o.push(\"uniform ivec3 outShapeStrides;\");\n break;\n default:\n break;\n }\n o.push(\"uniform ivec2 outTexShape;\");\n }\n t10.customUniforms && t10.customUniforms.forEach((d) => {\n o.push(`uniform ${d.type} ${d.name}${d.arrayIndex ? `[${d.arrayIndex}]` : \"\"};`);\n });\n let n = o.join(`\n`), s = r.map((d) => a8(d, e, t10.packedInputs, t10.enableShapeUniforms)).join(`\n`), a = e.texShape, i = wt(), p = p8(i), u, c, l = m8(i);\n return e.isPacked ? (u = i8(e.logicalShape, a, t10.enableShapeUniforms), c = l8(i)) : (u = u8(e.logicalShape, a, t10.enableShapeUniforms), c = c8(i)), t10.packedInputs && (l += g8), [l, p, c, n, u, s, t10.userCode].join(`\n`);\n}\nfunction uc(r, e = false) {\n let t10 = r.shapeInfo.logicalShape;\n switch (t10.length) {\n case 0:\n return _8(r, e);\n case 1:\n return E8(r, e);\n case 2:\n return R8(r, e);\n case 3:\n return F8(r, e);\n case 4:\n return P8(r, e);\n case 5:\n return M8(r);\n case 6:\n return L8(r);\n default:\n throw new Error(`${t10.length}-D input sampling is not yet supported`);\n }\n}\nfunction F$(r, e) {\n switch (r.shapeInfo.logicalShape.length) {\n case 0:\n return T8(r);\n case 1:\n return $8(r, e);\n case 2:\n return A8(r, e);\n case 3:\n return D8(r, e);\n default:\n return O8(r, e);\n }\n}\nfunction a8(r, e, t10 = false, o) {\n let n = \"\";\n t10 ? n += F$(r, o) : n += uc(r, o);\n let s = r.shapeInfo.logicalShape, a = e.logicalShape;\n return s.length <= a.length && (t10 ? n += B8(r, e) : n += V8(r, e)), n;\n}\nfunction i8(r, e, t10) {\n switch (r.length) {\n case 0:\n return O$();\n case 1:\n return x8(r, e, t10);\n case 2:\n return k8(r, e, t10);\n case 3:\n return b8(r, e, t10);\n default:\n return S8(r, e, t10);\n }\n}\nfunction u8(r, e, t10) {\n switch (r.length) {\n case 0:\n return O$();\n case 1:\n return y8(r, e, t10);\n case 2:\n return N8(r, e, t10);\n case 3:\n return C8(r, e, t10);\n case 4:\n return w8(r, e, t10);\n case 5:\n return I8(r, e);\n case 6:\n return v8(r, e);\n default:\n throw new Error(`${r.length}-D output sampling is not yet supported`);\n }\n}\nfunction p8(r) {\n return `\n float sampleTexture(sampler2D textureSampler, vec2 uv) {\n return ${r.texture2D}(textureSampler, uv).r;\n }\n `;\n}\nfunction c8(r) {\n return `\n void setOutput(float val) {\n ${r.output} = vec4(val, 0, 0, 0);\n }\n `;\n}\nfunction l8(r) {\n return `\n void setOutput(vec4 val) {\n ${r.output} = val;\n }\n `;\n}\nfunction m8(r) {\n return `${r.version}\n precision highp float;\n precision highp int;\n precision highp sampler2D;\n ${r.varyingFs} vec2 resultUV;\n ${r.defineOutput}\n const vec2 halfCR = vec2(0.5, 0.5);\n\n struct ivec5\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n };\n\n struct ivec6\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n int v;\n };\n\n uniform float NAN;\n ${r.defineSpecialNaN}\n ${r.defineSpecialInf}\n ${r.defineRound}\n\n int imod(int x, int y) {\n return x - y * (x / y);\n }\n\n int idiv(int a, int b, float sign) {\n int res = a / b;\n int mod = imod(a, b);\n if (sign < 0. && mod != 0) {\n res -= 1;\n }\n return res;\n }\n\n //Based on the work of Dave Hoskins\n //https://www.shadertoy.com/view/4djSRW\n #define HASHSCALE1 443.8975\n float random(float seed){\n vec2 p = resultUV * seed;\n vec3 p3 = fract(vec3(p.xyx) * HASHSCALE1);\n p3 += dot(p3, p3.yzx + 19.19);\n return fract((p3.x + p3.y) * p3.z);\n }\n\n ${d8}\n ${f8}\n ${h8}\n `;\n}\nvar d8 = `\nvec2 uvFromFlat(int texNumR, int texNumC, int index) {\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\nvec2 packedUVfrom1D(int texNumR, int texNumC, int index) {\n int texelIndex = index / 2;\n int texR = texelIndex / texNumC;\n int texC = texelIndex - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n`;\nvar f8 = `\nvec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR,\n int texNumC, int row, int col) {\n int texelIndex = (row / 2) * texelsInLogicalRow + (col / 2);\n int texR = texelIndex / texNumC;\n int texC = texelIndex - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n`;\nvar h8 = `\nvec2 packedUVfrom3D(int texNumR, int texNumC,\n int texelsInBatch, int texelsInLogicalRow, int b,\n int row, int col) {\n int index = b * texelsInBatch + (row / 2) * texelsInLogicalRow + (col / 2);\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n`;\nvar g8 = `\n float getChannel(vec4 frag, vec2 innerDims) {\n vec2 modCoord = mod(innerDims, 2.);\n return modCoord.x == 0. ?\n (modCoord.y == 0. ? frag.r : frag.g) :\n (modCoord.y == 0. ? frag.b : frag.a);\n }\n float getChannel(vec4 frag, int dim) {\n float modCoord = mod(float(dim), 2.);\n return modCoord == 0. ? frag.r : frag.g;\n }\n`;\nfunction O$() {\n return `\n int getOutputCoords() {\n return 0;\n }\n `;\n}\nfunction x8(r, e, t10) {\n let o = [Math.ceil(e[0] / 2), Math.ceil(e[1] / 2)];\n return o[0] === 1 ? t10 ? `\n int getOutputCoords() {\n return 2 * int(resultUV.x * ceil(float(outTexShape[1]) / 2.0));\n }\n ` : `\n int getOutputCoords() {\n return 2 * int(resultUV.x * ${o[1]}.0);\n }\n ` : o[1] === 1 ? t10 ? `\n int getOutputCoords() {\n return 2 * int(resultUV.y * ceil(float(outTexShape[0]) / 2.0));\n }\n ` : `\n int getOutputCoords() {\n return 2 * int(resultUV.y * ${o[0]}.0);\n }\n ` : t10 ? `\n int getOutputCoords() {\n ivec2 packedTexShape = ivec2(ceil(float(outTexShape[0]) / 2.0), ceil(float(outTexShape[1]) / 2.0));\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(packedTexShape[0], packedTexShape[1]));\n return 2 * (resTexRC.x * packedTexShape[1] + resTexRC.y);\n }\n ` : `\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${o[0]}, ${o[1]}));\n return 2 * (resTexRC.x * ${o[1]} + resTexRC.y);\n }\n `;\n}\nfunction y8(r, e, t10) {\n return e[0] === 1 ? t10 ? `\n int getOutputCoords() {\n return int(resultUV.x * float(outTexShape[1]));\n }\n ` : `\n int getOutputCoords() {\n return int(resultUV.x * ${e[1]}.0);\n }\n ` : e[1] === 1 ? t10 ? `\n int getOutputCoords() {\n return int(resultUV.y * float(outTexShape[0]));\n }\n ` : `\n int getOutputCoords() {\n return int(resultUV.y * ${e[0]}.0);\n }\n ` : t10 ? `\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(outTexShape[0], outTexShape[1]));\n return resTexRC.x * outTexShape[1] + resTexRC.y;\n }\n ` : `\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${e[0]}, ${e[1]}));\n return resTexRC.x * ${e[1]} + resTexRC.y;\n }\n `;\n}\nfunction b8(r, e, t10) {\n if (t10)\n return `\n ivec3 getOutputCoords() {\n ivec2 packedTexShape = ivec2(ceil(float(outTexShape[0]) / 2.0), ceil(float(outTexShape[1]) / 2.0));\n int texelsInLogicalRow = int(ceil(float(outShape[2]) / 2.0));\n int texelsInBatch = texelsInLogicalRow * int(ceil(float(outShape[1]) / 2.0));\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(packedTexShape[0], packedTexShape[1]));\n int index = resTexRC.x * packedTexShape[1] + resTexRC.y;\n\n int b = index / texelsInBatch;\n index -= b * texelsInBatch;\n\n int r = 2 * (index / texelsInLogicalRow);\n int c = imod(index, texelsInLogicalRow) * 2;\n\n return ivec3(b, r, c);\n }\n `;\n let o = [Math.ceil(e[0] / 2), Math.ceil(e[1] / 2)], n = Math.ceil(r[2] / 2), s = n * Math.ceil(r[1] / 2);\n return `\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${o[0]}, ${o[1]}));\n int index = resTexRC.x * ${o[1]} + resTexRC.y;\n\n int b = index / ${s};\n index -= b * ${s};\n\n int r = 2 * (index / ${n});\n int c = imod(index, ${n}) * 2;\n\n return ivec3(b, r, c);\n }\n `;\n}\nfunction C8(r, e, t10) {\n if (t10)\n return `\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(outTexShape[0], outTexShape[1]));\n int index = resTexRC.x * outTexShape[1] + resTexRC.y;\n ${Pu([\"r\", \"c\", \"d\"], r)}\n return ivec3(r, c, d);\n }\n`;\n let o = ps([\"r\", \"c\", \"d\"], r);\n return `\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${e[0]}, ${e[1]}));\n int index = resTexRC.x * ${e[1]} + resTexRC.y;\n ${o}\n return ivec3(r, c, d);\n }\n `;\n}\nfunction S8(r, e, t10) {\n if (t10)\n return `\n ivec4 getOutputCoords() {\n ivec2 packedTexShape = ivec2(ceil(float(outTexShape[0]) / 2.0), ceil(float(outTexShape[1]) / 2.0));\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(packedTexShape[0], packedTexShape[1]));\n int index = resTexRC.x * packedTexShape[1] + resTexRC.y;\n\n int texelsInLogicalRow = int(ceil(float(outShape[3]) / 2.0));\n int texelsInBatch = texelsInLogicalRow * int(ceil(float(outShape[2]) / 2.0));\n int texelsInBatchN = texelsInBatch * outShape[1];\n\n int b2 = index / texelsInBatchN;\n index -= b2 * texelsInBatchN;\n\n int b = index / texelsInBatch;\n index -= b * texelsInBatch;\n\n int r = 2 * (index / texelsInLogicalRow);\n int c = imod(index, texelsInLogicalRow) * 2;\n\n return ivec4(b2, b, r, c);\n }\n `;\n let o = [Math.ceil(e[0] / 2), Math.ceil(e[1] / 2)], n = Math.ceil(r[r.length - 1] / 2), s = n * Math.ceil(r[r.length - 2] / 2), a = s, i = \"\", p = \"b, r, c\";\n for (let u = 2; u < r.length - 1; u++)\n a *= r[r.length - u - 1], i = `\n int b${u} = index / ${a};\n index -= b${u} * ${a};\n ` + i, p = `b${u}, ` + p;\n return `\n ivec${r.length} getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${o[0]}, ${o[1]}));\n int index = resTexRC.x * ${o[1]} + resTexRC.y;\n\n ${i}\n\n int b = index / ${s};\n index -= b * ${s};\n\n int r = 2 * (index / ${n});\n int c = imod(index, ${n}) * 2;\n\n return ivec${r.length}(${p});\n }\n `;\n}\nfunction w8(r, e, t10) {\n if (t10)\n return `\n ivec4 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(outTexShape[0], outTexShape[1]));\n int index = resTexRC.x * outTexShape[1] + resTexRC.y;\n ${Pu([\"r\", \"c\", \"d\", \"d2\"], r)}\n return ivec4(r, c, d, d2);\n }\n `;\n let o = ps([\"r\", \"c\", \"d\", \"d2\"], r);\n return `\n ivec4 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${e[0]}, ${e[1]}));\n int index = resTexRC.x * ${e[1]} + resTexRC.y;\n ${o}\n return ivec4(r, c, d, d2);\n }\n `;\n}\nfunction I8(r, e) {\n let t10 = ps([\"r\", \"c\", \"d\", \"d2\", \"d3\"], r);\n return `\n ivec5 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx * vec2(${e[0]},\n ${e[1]}));\n\n int index = resTexRC.x * ${e[1]} + resTexRC.y;\n\n ${t10}\n\n ivec5 outShape = ivec5(r, c, d, d2, d3);\n return outShape;\n }\n `;\n}\nfunction v8(r, e) {\n let t10 = ps([\"r\", \"c\", \"d\", \"d2\", \"d3\", \"d4\"], r);\n return `\n ivec6 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${e[0]}, ${e[1]}));\n int index = resTexRC.x * ${e[1]} + resTexRC.y;\n\n ${t10}\n\n ivec6 result = ivec6(r, c, d, d2, d3, d4);\n return result;\n }\n `;\n}\nfunction k8(r, e, t10) {\n let o = [Math.ceil(e[0] / 2), Math.ceil(e[1] / 2)];\n if (y.arraysEqual(r, e))\n return t10 ? `\n ivec2 getOutputCoords() {\n ivec2 packedTexShape = ivec2(ceil(float(outTexShape[0]) / 2.0), ceil(float(outTexShape[1]) / 2.0));\n return 2 * ivec2(resultUV.yx * vec2(packedTexShape[0], packedTexShape[1]));\n }\n ` : `\n ivec2 getOutputCoords() {\n return 2 * ivec2(resultUV.yx * vec2(${o[0]}, ${o[1]}));\n }\n `;\n let n = Math.ceil(r[1] / 2);\n return t10 ? `\n ivec2 getOutputCoords() {\n ivec2 packedTexShape = ivec2(ceil(float(outTexShape[0]) / 2.0), ceil(float(outTexShape[1]) / 2.0));\n int texelsInLogicalRow = int(ceil(float(outShape[1]) / 2.0));\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(packedTexShape[0], packedTexShape[1]));\n\n int index = resTexRC.x * packedTexShape[1] + resTexRC.y;\n int r = 2 * (index / texelsInLogicalRow);\n int c = imod(index, texelsInLogicalRow) * 2;\n\n return ivec2(r, c);\n }\n ` : `\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${o[0]}, ${o[1]}));\n\n int index = resTexRC.x * ${o[1]} + resTexRC.y;\n int r = 2 * (index / ${n});\n int c = imod(index, ${n}) * 2;\n\n return ivec2(r, c);\n }\n `;\n}\nfunction N8(r, e, t10) {\n return y.arraysEqual(r, e) ? t10 ? `\n ivec2 getOutputCoords() {\n return ivec2(resultUV.yx * vec2(outTexShape[0], outTexShape[1]));\n }\n ` : `\n ivec2 getOutputCoords() {\n return ivec2(resultUV.yx * vec2(${e[0]}, ${e[1]}));\n }\n ` : r[1] === 1 ? t10 ? `\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(outTexShape[0], outTexShape[1]));\n int index = resTexRC.x * outTexShape[1] + resTexRC.y;\n return ivec2(index, 0);\n }\n ` : `\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${e[0]}, ${e[1]}));\n int index = resTexRC.x * ${e[1]} + resTexRC.y;\n return ivec2(index, 0);\n }\n ` : r[0] === 1 ? t10 ? `\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(outTexShape[0], outTexShape[1]));\n int index = resTexRC.x * outTexShape[1] + resTexRC.y;\n return ivec2(0, index);\n }\n ` : `\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${e[0]}, ${e[1]}));\n int index = resTexRC.x * ${e[1]} + resTexRC.y;\n return ivec2(0, index);\n }\n ` : t10 ? `\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(outTexShape[0], outTexShape[1]));\n int index = resTexRC.x * outTexShape[1] + resTexRC.y;\n int r = index / outShape[1];\n int c = index - r * outShape[1];\n return ivec2(r, c);\n }\n ` : `\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${e[0]}, ${e[1]}));\n int index = resTexRC.x * ${e[1]} + resTexRC.y;\n int r = index / ${r[1]};\n int c = index - r * ${r[1]};\n return ivec2(r, c);\n }\n `;\n}\nfunction Mu(r) {\n return `offset${r}`;\n}\nfunction T8(r) {\n let e = r.name, t10 = \"get\" + e.charAt(0).toUpperCase() + e.slice(1), o = wt();\n return `\n vec4 ${t10}() {\n return ${o.texture2D}(${e}, halfCR);\n }\n `;\n}\nfunction _8(r, e) {\n let t10 = r.name, o = \"get\" + t10.charAt(0).toUpperCase() + t10.slice(1);\n if (r.shapeInfo.isUniform)\n return `float ${o}() {return ${t10};}`;\n let [n, s] = r.shapeInfo.texShape;\n if (n === 1 && s === 1)\n return `\n float ${o}() {\n return sampleTexture(${t10}, halfCR);\n }\n `;\n let a = Mu(t10);\n if (e)\n return `\n float ${o}() {\n vec2 uv = uvFromFlat(${t10}TexShape[0], ${t10}TexShape[1], ${a});\n return sampleTexture(${t10}, uv);\n }\n `;\n let [i, p] = r.shapeInfo.texShape;\n return `\n float ${o}() {\n vec2 uv = uvFromFlat(${i}, ${p}, ${a});\n return sampleTexture(${t10}, uv);\n }\n `;\n}\nfunction $8(r, e) {\n let t10 = r.name, o = \"get\" + t10.charAt(0).toUpperCase() + t10.slice(1), n = r.shapeInfo.texShape, s = wt();\n if (e)\n return `\n vec4 ${o}(int index) {\n ivec2 packedTexShape = ivec2(ceil(float(${t10}TexShape[0]) / 2.0), ceil(float(${t10}TexShape[1]) / 2.0));\n vec2 uv = packedUVfrom1D(\n packedTexShape[0], packedTexShape[1], index);\n return ${s.texture2D}(${t10}, uv);\n }\n `;\n let a = [Math.ceil(n[0] / 2), Math.ceil(n[1] / 2)];\n return `\n vec4 ${o}(int index) {\n vec2 uv = packedUVfrom1D(\n ${a[0]}, ${a[1]}, index);\n return ${s.texture2D}(${t10}, uv);\n }\n `;\n}\nfunction E8(r, e) {\n let t10 = r.name, o = \"get\" + t10.charAt(0).toUpperCase() + t10.slice(1);\n if (r.shapeInfo.isUniform)\n return `\n float ${o}(int index) {\n ${pc(r)}\n }\n `;\n let n = r.shapeInfo.texShape, s = n[0], a = n[1];\n if (a === 1 && s === 1)\n return `\n float ${o}(int index) {\n return sampleTexture(${t10}, halfCR);\n }\n `;\n let i = Mu(t10);\n return a === 1 ? e ? `\n float ${o}(int index) {\n vec2 uv = vec2(0.5, (float(index + ${i}) + 0.5) / float(${t10}TexShape[0]));\n return sampleTexture(${t10}, uv);\n }\n ` : `\n float ${o}(int index) {\n vec2 uv = vec2(0.5, (float(index + ${i}) + 0.5) / ${s}.0);\n return sampleTexture(${t10}, uv);\n }\n ` : s === 1 ? e ? `\n float ${o}(int index) {\n vec2 uv = vec2((float(index + ${i}) + 0.5) / float(${t10}TexShape[1]), 0.5);\n return sampleTexture(${t10}, uv);\n }\n ` : `\n float ${o}(int index) {\n vec2 uv = vec2((float(index + ${i}) + 0.5) / ${a}.0, 0.5);\n return sampleTexture(${t10}, uv);\n }\n ` : e ? `\n float ${o}(int index) {\n vec2 uv = uvFromFlat(${t10}TexShape[0], ${t10}TexShape[1], index + ${i});\n return sampleTexture(${t10}, uv);\n }\n ` : `\n float ${o}(int index) {\n vec2 uv = uvFromFlat(${s}, ${a}, index + ${i});\n return sampleTexture(${t10}, uv);\n }\n `;\n}\nfunction A8(r, e) {\n let t10 = r.shapeInfo.logicalShape, o = r.name, n = \"get\" + o.charAt(0).toUpperCase() + o.slice(1), s = r.shapeInfo.texShape, a = s[0], i = s[1], p = wt();\n if (s != null && y.arraysEqual(t10, s))\n return e ? `\n vec4 ${n}(int row, int col) {\n vec2 uv = (vec2(col, row) + halfCR) / vec2(${o}TexShape[1], ${o}TexShape[0]);\n\n return ${p.texture2D}(${o}, uv);\n }\n ` : `\n vec4 ${n}(int row, int col) {\n vec2 uv = (vec2(col, row) + halfCR) / vec2(${i}.0, ${a}.0);\n\n return ${p.texture2D}(${o}, uv);\n }\n `;\n if (e)\n return `\n vec4 ${n}(int row, int col) {\n ivec2 packedTexShape = ivec2(ceil(float(${o}TexShape[0]) / 2.0), ceil(float(${o}TexShape[1]) / 2.0));\n int valuesPerRow = int(ceil(float(${o}Shape[1]) / 2.0));\n vec2 uv = packedUVfrom2D(valuesPerRow, packedTexShape[0], packedTexShape[1], row, col);\n return ${p.texture2D}(${o}, uv);\n }\n `;\n let u = [Math.ceil(s[0] / 2), Math.ceil(s[1] / 2)], c = Math.ceil(t10[1] / 2);\n return `\n vec4 ${n}(int row, int col) {\n vec2 uv = packedUVfrom2D(${c}, ${u[0]}, ${u[1]}, row, col);\n return ${p.texture2D}(${o}, uv);\n }\n `;\n}\nfunction R8(r, e) {\n let t10 = r.shapeInfo.logicalShape, o = r.name, n = \"get\" + o.charAt(0).toUpperCase() + o.slice(1), s = r.shapeInfo.texShape;\n if (s != null && y.arraysEqual(t10, s)) {\n if (e)\n return `\n float ${n}(int row, int col) {\n vec2 uv = (vec2(col, row) + halfCR) / vec2(${o}TexShape[1], ${o}TexShape[0]);\n return sampleTexture(${o}, uv);\n }\n `;\n let m = s[0], d = s[1];\n return `\n float ${n}(int row, int col) {\n vec2 uv = (vec2(col, row) + halfCR) / vec2(${d}.0, ${m}.0);\n return sampleTexture(${o}, uv);\n }\n `;\n }\n let { newShape: a, keptDims: i } = y.squeezeShape(t10), p = a;\n if (p.length < t10.length) {\n let m = cc(r, p), d = [\"row\", \"col\"];\n return `\n ${uc(m, e)}\n float ${n}(int row, int col) {\n return ${n}(${lc(d, i)});\n }\n `;\n }\n if (r.shapeInfo.isUniform)\n return `\n float ${n}(int row, int col) {\n int index = round(dot(vec2(row, col), vec2(${t10[1]}, 1)));\n ${pc(r)}\n }\n `;\n let u = s[0], c = s[1], l = Mu(o);\n return c === 1 ? e ? `\n float ${n}(int row, int col) {\n float index = dot(vec3(row, col, ${l}), vec3(${o}Shape[1], 1, 1));\n vec2 uv = vec2(0.5, (index + 0.5) / float(${o}TexShape[0]));\n return sampleTexture(${o}, uv);\n }\n ` : `\n float ${n}(int row, int col) {\n float index = dot(vec3(row, col, ${l}), vec3(${t10[1]}, 1, 1));\n vec2 uv = vec2(0.5, (index + 0.5) / ${u}.0);\n return sampleTexture(${o}, uv);\n }\n ` : u === 1 ? e ? `\n float ${n}(int row, int col) {\n float index = dot(vec3(row, col, ${l}), vec3(${o}Shape[1], 1, 1));\n vec2 uv = vec2((index + 0.5) / float(${o}TexShape[1]), 0.5);\n return sampleTexture(${o}, uv);\n }\n ` : `\n float ${n}(int row, int col) {\n float index = dot(vec3(row, col, ${l}), vec3(${t10[1]}, 1, 1));\n vec2 uv = vec2((index + 0.5) / ${c}.0, 0.5);\n return sampleTexture(${o}, uv);\n }\n ` : e ? `\n float ${n}(int row, int col) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * ${o}Shape[1] + col + ${l};\n vec2 uv = uvFromFlat(${o}TexShape[0], ${o}TexShape[1], index);\n return sampleTexture(${o}, uv);\n }\n ` : `\n float ${n}(int row, int col) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * ${t10[1]} + col + ${l};\n vec2 uv = uvFromFlat(${u}, ${c}, index);\n return sampleTexture(${o}, uv);\n }\n`;\n}\nfunction D8(r, e) {\n let t10 = r.shapeInfo.logicalShape, o = r.name, n = \"get\" + o.charAt(0).toUpperCase() + o.slice(1), s = r.shapeInfo.texShape, a = [Math.ceil(s[0] / 2), Math.ceil(s[1] / 2)];\n if (t10[0] === 1) {\n let m = t10.slice(1), d = [1, 2], f = cc(r, m), h = [\"b\", \"row\", \"col\"];\n return `\n ${F$(f, e)}\n vec4 ${n}(int b, int row, int col) {\n return ${n}(${lc(h, d)});\n }\n `;\n }\n let i = wt();\n if (e)\n return `\n vec4 ${n}(int b, int row, int col) {\n ivec2 packedTexShape = ivec2(ceil(float(${o}TexShape[0]) / 2.0), ceil(float(${o}TexShape[1]) / 2.0));\n int valuesPerRow = int(ceil(float(${o}Shape[2]) / 2.0));\n int texelsInBatch = valuesPerRow * int(ceil(float(${o}Shape[1]) / 2.0));\n vec2 uv = packedUVfrom3D(\n packedTexShape[0], packedTexShape[1], texelsInBatch, valuesPerRow, b, row, col);\n return ${i.texture2D}(${o}, uv);\n }\n `;\n let p = a[0], u = a[1], c = Math.ceil(t10[2] / 2), l = c * Math.ceil(t10[1] / 2);\n return `\n vec4 ${n}(int b, int row, int col) {\n vec2 uv = packedUVfrom3D(\n ${p}, ${u}, ${l}, ${c}, b, row, col);\n return ${i.texture2D}(${o}, uv);\n }\n `;\n}\nfunction F8(r, e) {\n let t10 = r.shapeInfo.logicalShape, o = r.name, n = \"get\" + o.charAt(0).toUpperCase() + o.slice(1), s = t10[1] * t10[2], a = t10[2], { newShape: i, keptDims: p } = y.squeezeShape(t10), u = i;\n if (u.length < t10.length) {\n let h = cc(r, u), g = [\"row\", \"col\", \"depth\"];\n return `\n ${uc(h, e)}\n float ${n}(int row, int col, int depth) {\n return ${n}(${lc(g, p)});\n }\n `;\n }\n if (r.shapeInfo.isUniform)\n return `\n float ${n}(int row, int col, int depth) {\n int index = round(dot(vec3(row, col, depth),\n vec3(${s}, ${a}, 1)));\n ${pc(r)}\n }\n `;\n let c = r.shapeInfo.texShape, l = c[0], m = c[1], d = r.shapeInfo.flatOffset;\n if (m === s && d == null)\n return e ? `\n float ${n}(int row, int col, int depth) {\n int stride1 = ${o}Shape[2];\n float texR = float(row);\n float texC = dot(vec2(col, depth), vec2(stride1, 1));\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(${o}TexShape[1], ${o}TexShape[0]);\n return sampleTexture(${o}, uv);\n }\n ` : `\n float ${n}(int row, int col, int depth) {\n float texR = float(row);\n float texC = dot(vec2(col, depth), vec2(${a}, 1));\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(${m}.0, ${l}.0);\n return sampleTexture(${o}, uv);\n }\n `;\n if (m === a && d == null)\n return e ? `\n float ${n}(int row, int col, int depth) {\n float texR = dot(vec2(row, col), vec2(${o}Shape[1], 1));\n float texC = float(depth);\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2(${o}TexShape[1], ${o}TexShape[0]);\n return sampleTexture(${o}, uv);\n }\n ` : `\n float ${n}(int row, int col, int depth) {\n float texR = dot(vec2(row, col), vec2(${t10[1]}, 1));\n float texC = float(depth);\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2(${m}.0, ${l}.0);\n return sampleTexture(${o}, uv);\n }\n `;\n let f = Mu(o);\n return e ? `\n float ${n}(int row, int col, int depth) {\n // Explicitly use integer operations as dot() only works on floats.\n int stride0 = ${o}Shape[1] * ${o}Shape[2];\n int stride1 = ${o}Shape[2];\n int index = row * stride0 + col * stride1 + depth + ${f};\n vec2 uv = uvFromFlat(${o}TexShape[0], ${o}TexShape[1], index);\n return sampleTexture(${o}, uv);\n }\n ` : `\n float ${n}(int row, int col, int depth) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * ${s} + col * ${a} + depth + ${f};\n vec2 uv = uvFromFlat(${l}, ${m}, index);\n return sampleTexture(${o}, uv);\n }\n `;\n}\nfunction O8(r, e) {\n let t10 = r.name, o = \"get\" + t10.charAt(0).toUpperCase() + t10.slice(1), n = wt();\n if (e)\n return `\n vec4 ${o}(int b2, int b, int row, int col) {\n int valuesPerRow = int(ceil(float(${t10}Shape[3]) / 2.0));\n int texelsInBatch = valuesPerRow * int(ceil(float(${t10}Shape[2]) / 2.0));\n int index = b * texelsInBatch + (row / 2) * valuesPerRow + (col / 2);\n texelsInBatch *= ${t10}Shape[1];\n index = b2 * texelsInBatch + index;\n ivec2 packedTexShape = ivec2(ceil(float(${t10}TexShape[0]) / 2.0), ceil(float(${t10}TexShape[1]) / 2.0));\n int texR = index / packedTexShape[1];\n int texC = index - texR * packedTexShape[1];\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2(packedTexShape[1], packedTexShape[0]); return ${n.texture2D}(${t10}, uv);\n }\n `;\n let s = r.shapeInfo.logicalShape, a = s.length, i = r.shapeInfo.texShape, p = [Math.ceil(i[0] / 2), Math.ceil(i[1] / 2)], u = p[0], c = p[1], l = Math.ceil(s[a - 1] / 2), m = l * Math.ceil(s[a - 2] / 2), d = \"int b, int row, int col\", f = `b * ${m} + (row / 2) * ${l} + (col / 2)`;\n for (let h = 2; h < a - 1; h++)\n d = `int b${h}, ` + d, m *= s[a - h - 1], f = `b${h} * ${m} + ` + f;\n return `\n vec4 ${o}(${d}) {\n int index = ${f};\n int texR = index / ${c};\n int texC = index - texR * ${c};\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2(${c}, ${u});\n return ${n.texture2D}(${t10}, uv);\n }\n `;\n}\nfunction P8(r, e) {\n let t10 = r.shapeInfo.logicalShape, o = r.name, n = \"get\" + o.charAt(0).toUpperCase() + o.slice(1), s = t10[3], a = t10[2] * s, i = t10[1] * a, { newShape: p, keptDims: u } = y.squeezeShape(t10);\n if (p.length < t10.length) {\n let b = cc(r, p), C = [\"row\", \"col\", \"depth\", \"depth2\"];\n return `\n ${uc(b, e)}\n float ${n}(int row, int col, int depth, int depth2) {\n return ${n}(${lc(C, u)});\n }\n `;\n }\n if (r.shapeInfo.isUniform)\n return `\n float ${n}(int row, int col, int depth, int depth2) {\n int index = round(dot(vec4(row, col, depth, depth2),\n vec4(${i}, ${a}, ${s}, 1)));\n ${pc(r)}\n }\n `;\n let c = r.shapeInfo.flatOffset, l = r.shapeInfo.texShape, m = l[0], d = l[1], f = `int stride2 = ${o}Shape[3];`, h = `int stride1 = ${o}Shape[2] * stride2;`, g = `int stride0 = ${o}Shape[1] * stride1;`;\n if (d === i && c == null)\n return e ? `\n float ${n}(int row, int col, int depth, int depth2) {\n ${f}\n ${h}\n float texR = float(row);\n float texC =\n dot(vec3(col, depth, depth2),\n vec3(stride1, stride2, 1));\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(${o}TexShape[1], ${o}TexShape[0]);\n return sampleTexture(${o}, uv);\n }\n ` : `\n float ${n}(int row, int col, int depth, int depth2) {\n float texR = float(row);\n float texC =\n dot(vec3(col, depth, depth2),\n vec3(${a}, ${s}, 1));\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(${d}.0, ${m}.0);\n return sampleTexture(${o}, uv);\n }\n `;\n if (d === s && c == null)\n return e ? `\n float ${n}(int row, int col, int depth, int depth2) {\n float texR = dot(vec3(row, col, depth),\n vec3(${o}Shape[1] * ${o}Shape[2], ${o}Shape[2], 1));\n float texC = float(depth2);\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(${o}TexShape[1], ${o}TexShape[0]);\n return sampleTexture(${o}, uv);\n }\n ` : `\n float ${n}(int row, int col, int depth, int depth2) {\n float texR = dot(vec3(row, col, depth),\n vec3(${t10[1] * t10[2]}, ${t10[2]}, 1));\n float texC = float(depth2);\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(${d}.0, ${m}.0);\n return sampleTexture(${o}, uv);\n }\n `;\n let x = Mu(o);\n return e ? `\n float ${n}(int row, int col, int depth, int depth2) {\n // Explicitly use integer operations as dot() only works on floats.\n ${f}\n ${h}\n ${g}\n int index = row * stride0 + col * stride1 +\n depth * stride2 + depth2;\n vec2 uv = uvFromFlat(${o}TexShape[0], ${o}TexShape[1], index + ${x});\n return sampleTexture(${o}, uv);\n }\n ` : `\n float ${n}(int row, int col, int depth, int depth2) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * ${i} + col * ${a} +\n depth * ${s} + depth2;\n vec2 uv = uvFromFlat(${m}, ${d}, index + ${x});\n return sampleTexture(${o}, uv);\n }\n `;\n}\nfunction M8(r) {\n let e = r.shapeInfo.logicalShape, t10 = r.name, o = \"get\" + t10.charAt(0).toUpperCase() + t10.slice(1), n = e[4], s = e[3] * n, a = e[2] * s, i = e[1] * a, { newShape: p, keptDims: u } = y.squeezeShape(e);\n if (p.length < e.length) {\n let h = cc(r, p), g = [\"row\", \"col\", \"depth\", \"depth2\", \"depth3\"];\n return `\n ${uc(h)}\n float ${o}(int row, int col, int depth, int depth2, int depth3) {\n return ${o}(${lc(g, u)});\n }\n `;\n }\n if (r.shapeInfo.isUniform)\n return `\n float ${o}(int row, int col, int depth, int depth2, int depth3) {\n float index = dot(\n vec4(row, col, depth, depth2),\n vec4(${i}, ${a}, ${s}, ${n})) +\n depth3;\n ${pc(r)}\n }\n `;\n let c = r.shapeInfo.flatOffset, l = r.shapeInfo.texShape, m = l[0], d = l[1];\n if (d === i && c == null)\n return `\n float ${o}(int row, int col, int depth, int depth2, int depth3) {\n int texR = row;\n float texC = dot(vec4(col, depth, depth2, depth3),\n vec4(${a}, ${s}, ${n}, 1));\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(${d}.0, ${m}.0);\n return sampleTexture(${t10}, uv);\n }\n `;\n if (d === n && c == null)\n return `\n float ${o}(int row, int col, int depth, int depth2, int depth3) {\n float texR = dot(\n vec4(row, col, depth, depth2),\n vec4(${e[1] * e[2] * e[3]},\n ${e[2] * e[3]}, ${e[3]}, 1));\n int texC = depth3;\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(${d}.0, ${m}.0);\n return sampleTexture(${t10}, uv);\n }\n `;\n let f = Mu(t10);\n return `\n float ${o}(int row, int col, int depth, int depth2, int depth3) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * ${i} + col * ${a} + depth * ${s} +\n depth2 * ${n} + depth3 + ${f};\n vec2 uv = uvFromFlat(${m}, ${d}, index);\n return sampleTexture(${t10}, uv);\n }\n `;\n}\nfunction L8(r) {\n let e = r.shapeInfo.logicalShape, t10 = r.name, o = \"get\" + t10.charAt(0).toUpperCase() + t10.slice(1), { newShape: n, keptDims: s } = y.squeezeShape(e);\n if (n.length < e.length) {\n let g = cc(r, n), x = [\"row\", \"col\", \"depth\", \"depth2\", \"depth3\", \"depth4\"];\n return `\n ${uc(g)}\n float ${o}(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n return ${o}(${lc(x, s)});\n }\n `;\n }\n let a = e[5], i = e[4] * a, p = e[3] * i, u = e[2] * p, c = e[1] * u;\n if (r.shapeInfo.isUniform)\n return `\n float ${o}(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n int index = round(dot(\n vec4(row, col, depth, depth2),\n vec4(${c}, ${u}, ${p}, ${i})) +\n dot(\n vec2(depth3, depth4),\n vec2(${a}, 1)));\n ${pc(r)}\n }\n `;\n let l = r.shapeInfo.flatOffset, m = r.shapeInfo.texShape, d = m[0], f = m[1];\n if (f === c && l == null)\n return `\n float ${o}(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n int texR = row;\n float texC = dot(vec4(col, depth, depth2, depth3),\n vec4(${u}, ${p}, ${i}, ${a})) +\n float(depth4);\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(${f}.0, ${d}.0);\n return sampleTexture(${t10}, uv);\n }\n `;\n if (f === a && l == null)\n return `\n float ${o}(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n float texR = dot(vec4(row, col, depth, depth2),\n vec4(${e[1] * e[2] * e[3] * e[4]},\n ${e[2] * e[3] * e[4]},\n ${e[3] * e[4]},\n ${e[4]})) + float(depth3);\n int texC = depth4;\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(${f}.0, ${d}.0);\n return sampleTexture(${t10}, uv);\n }\n `;\n let h = Mu(t10);\n return `\n float ${o}(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * ${c} + col * ${u} + depth * ${p} +\n depth2 * ${i} + depth3 * ${a} + depth4 + ${h};\n vec2 uv = uvFromFlat(${d}, ${f}, index);\n return sampleTexture(${t10}, uv);\n }\n `;\n}\nfunction pc(r) {\n let e = r.name, t10 = y.sizeFromShape(r.shapeInfo.logicalShape);\n return t10 < 2 ? `return ${e};` : `\n for (int i = 0; i < ${t10}; i++) {\n if (i == index) {\n return ${e}[i];\n }\n }\n `;\n}\nfunction B8(r, e) {\n let t10 = r.name, o = t10.charAt(0).toUpperCase() + t10.slice(1), n = \"get\" + o + \"AtOutCoords\", s = r.shapeInfo.logicalShape.length, a = e.logicalShape.length, i = R$(r.shapeInfo.logicalShape, e.logicalShape), p = $e(a), u = a - s, c, l = [\"x\", \"y\", \"z\", \"w\", \"u\", \"v\"];\n s === 0 ? c = \"\" : a < 2 && i.length >= 1 ? c = \"coords = 0;\" : c = i.map((b) => `coords.${l[b + u]} = 0;`).join(`\n`);\n let m = \"\";\n a < 2 && s > 0 ? m = \"coords\" : m = r.shapeInfo.logicalShape.map((b, C) => `coords.${l[C + u]}`).join(\", \");\n let d = \"return outputValue;\", h = y.sizeFromShape(r.shapeInfo.logicalShape) === 1, x = y.sizeFromShape(e.logicalShape) === 1;\n if (s === 1 && !h && !x)\n d = `\n return vec4(outputValue.xy, outputValue.xy);\n `;\n else if (h && !x)\n a === 1 ? d = `\n return vec4(outputValue.x, outputValue.x, 0., 0.);\n ` : d = `\n return vec4(outputValue.x);\n `;\n else if (i.length) {\n let b = s - 2, C = s - 1;\n i.indexOf(b) > -1 && i.indexOf(C) > -1 ? d = \"return vec4(outputValue.x);\" : i.indexOf(b) > -1 ? d = \"return vec4(outputValue.x, outputValue.y, outputValue.x, outputValue.y);\" : i.indexOf(C) > -1 && (d = \"return vec4(outputValue.xx, outputValue.zz);\");\n }\n return `\n vec4 ${n}() {\n ${p} coords = getOutputCoords();\n ${c}\n vec4 outputValue = get${o}(${m});\n ${d}\n }\n `;\n}\nfunction V8(r, e) {\n let t10 = r.name, o = t10.charAt(0).toUpperCase() + t10.slice(1), n = \"get\" + o + \"AtOutCoords\", s = e.texShape, a = r.shapeInfo.texShape, i = r.shapeInfo.logicalShape.length, p = e.logicalShape.length;\n if (!r.shapeInfo.isUniform && i === p && r.shapeInfo.flatOffset == null && y.arraysEqual(a, s))\n return `\n float ${n}() {\n return sampleTexture(${t10}, resultUV);\n }\n `;\n let u = $e(p), c = R$(r.shapeInfo.logicalShape, e.logicalShape), l = p - i, m, d = [\"x\", \"y\", \"z\", \"w\", \"u\", \"v\"];\n i === 0 ? m = \"\" : p < 2 && c.length >= 1 ? m = \"coords = 0;\" : m = c.map((h) => `coords.${d[h + l]} = 0;`).join(`\n`);\n let f = \"\";\n return p < 2 && i > 0 ? f = \"coords\" : f = r.shapeInfo.logicalShape.map((h, g) => `coords.${d[g + l]}`).join(\", \"), `\n float ${n}() {\n ${u} coords = getOutputCoords();\n ${m}\n return get${o}(${f});\n }\n `;\n}\nfunction $e(r) {\n if (r <= 1)\n return \"int\";\n if (r === 2)\n return \"ivec2\";\n if (r === 3)\n return \"ivec3\";\n if (r === 4)\n return \"ivec4\";\n if (r === 5)\n return \"ivec5\";\n if (r === 6)\n return \"ivec6\";\n throw Error(`GPU for rank ${r} is not yet supported`);\n}\nfunction Of(r, e, t10) {\n let { newShape: o, keptDims: n } = y.squeezeShape(e), s = e.length, a = r && s === 3 && e[0] === 1, i = a ? e.slice(1) : o, p = !r && s > 1 && !y.arraysEqual(e, t10) && o.length < s || a;\n return { useSqueezeShape: p, uniformShape: p ? i : e, keptDims: n };\n}\nfunction cc(r, e) {\n let t10 = JSON.parse(JSON.stringify(r));\n return t10.shapeInfo.logicalShape = e, t10;\n}\nfunction lc(r, e) {\n return e.map((t10) => r[t10]).join(\", \");\n}\nfunction M$(r, e, t10, o) {\n let n = t10.map((c, l) => {\n let m = { logicalShape: c.shape, texShape: c.isUniform ? null : c.texData.texShape, isUniform: c.isUniform, isPacked: c.isUniform ? false : c.texData.isPacked, flatOffset: null };\n return c.texData != null && c.texData.slice != null && c.texData.slice.flatOffset > 0 && (m.flatOffset = c.texData.slice.flatOffset), { name: e.variableNames[l], shapeInfo: m };\n }), s = n.map((c) => c.shapeInfo), a = { logicalShape: o.shape, texShape: o.texData.texShape, isUniform: false, isPacked: o.texData.isPacked, flatOffset: null }, i = D$(n, a, e), p = jS(r.gl, i), u = r.createProgram(p);\n return O().get(\"ENGINE_COMPILE_ONLY\") ? { program: e, fragmentShader: p, source: i, webGLProgram: u, inShapeInfos: s, outShapeInfo: a, uniformLocations: null, customUniformLocations: null, infLoc: null, nanLoc: null, inShapesLocations: null, inTexShapesLocations: null, outShapeLocation: null, outShapeStridesLocation: null, outTexShapeLocation: null } : Object.assign({ program: e, fragmentShader: p, source: i, webGLProgram: u, inShapeInfos: s, outShapeInfo: a }, mw(r, e, u));\n}\nfunction mw(r, e, t10) {\n let o = {}, n = {}, s = {}, a = [], i, p, u, c = null, l = null;\n l = r.getUniformLocation(t10, \"NAN\", false), O().getNumber(\"WEBGL_VERSION\") === 1 && (c = r.getUniformLocation(t10, \"INFINITY\", false));\n let m = false;\n for (let d = 0; d < e.variableNames.length; d++) {\n let f = e.variableNames[d];\n o[f] = r.getUniformLocation(t10, f, m), o[`offset${f}`] = r.getUniformLocation(t10, `offset${f}`, m), e.enableShapeUniforms && (n[`${f}Shape`] = r.getUniformLocation(t10, `${f}Shape`, m), s[`${f}TexShape`] = r.getUniformLocation(t10, `${f}TexShape`, m));\n }\n return e.enableShapeUniforms && (i = r.getUniformLocation(t10, \"outShape\", m), u = r.getUniformLocation(t10, \"outShapeStrides\", m), p = r.getUniformLocation(t10, \"outTexShape\", m)), e.customUniforms && e.customUniforms.forEach((d, f) => {\n a[f] = r.getUniformLocation(t10, d.name, m);\n }), { uniformLocations: o, customUniformLocations: a, infLoc: c, nanLoc: l, inShapesLocations: n, inTexShapesLocations: s, outShapeLocation: i, outShapeStridesLocation: u, outTexShapeLocation: p };\n}\nfunction P$(r, e) {\n if (r.length !== e.length)\n throw Error(`Binary was compiled with ${r.length} inputs, but was executed with ${e.length} inputs`);\n r.forEach((t10, o) => {\n let n = t10.logicalShape, s = e[o], a = s.shape;\n if (!y.arraysEqual(n, a))\n throw Error(`Binary was compiled with different shapes than the current args. Shapes ${n} and ${a} must match`);\n if (t10.isUniform && s.isUniform)\n return;\n let i = t10.texShape, p = s.isUniform ? null : s.texData.texShape;\n if (!y.arraysEqual(i, p))\n throw Error(`Binary was compiled with different texture shapes than the current args. Shape ${i} and ${p} must match`);\n });\n}\nfunction L$(r, e, t10, o, n) {\n e.program.enableShapeUniforms || (P$(e.inShapeInfos, t10), P$([e.outShapeInfo], [o]));\n let s = o.texData.texture, a = o.texData.texShape;\n o.texData.isPacked ? r.setOutputPackedMatrixTexture(s.texture, a[0], a[1]) : r.setOutputMatrixTexture(s.texture, a[0], a[1]), r.setProgram(e.webGLProgram), O().getNumber(\"WEBGL_VERSION\") === 1 && e.infLoc !== null && r.gl.uniform1f(e.infLoc, 1 / 0), e.nanLoc !== null && r.gl.uniform1f(e.nanLoc, NaN), t10.forEach((p, u) => {\n let c = e.program.variableNames[u], l = e.uniformLocations[c], m = e.uniformLocations[`offset${c}`], d = e.inShapesLocations[`${c}Shape`], f = e.inTexShapesLocations[`${c}TexShape`];\n if (d) {\n let { uniformShape: h } = Of(e.program.packedInputs, p.shape, p.texData.texShape);\n switch (h.length) {\n case 1:\n r.gl.uniform1iv(d, new Int32Array(h));\n break;\n case 2:\n r.gl.uniform2iv(d, new Int32Array(h));\n break;\n case 3:\n r.gl.uniform3iv(d, new Int32Array(h));\n break;\n case 4:\n r.gl.uniform4iv(d, new Int32Array(h));\n break;\n default:\n break;\n }\n }\n if (f && r.gl.uniform2i(f, p.texData.texShape[0], p.texData.texShape[1]), l != null) {\n if (p.isUniform) {\n if (y.sizeFromShape(p.shape) < 2)\n r.gl.uniform1f(l, p.uniformValues[0]);\n else {\n let h = p.uniformValues;\n h instanceof Float32Array || (h = new Float32Array(h)), r.gl.uniform1fv(l, h);\n }\n return;\n }\n p.texData.slice != null && m != null && r.gl.uniform1i(m, p.texData.slice.flatOffset), r.setInputMatrixTexture(p.texData.texture.texture, l, u);\n }\n });\n let i = e.outShapeLocation;\n if (i)\n switch (o.shape.length) {\n case 1:\n r.gl.uniform1iv(i, new Int32Array(o.shape));\n break;\n case 2:\n r.gl.uniform2iv(i, new Int32Array(o.shape));\n break;\n case 3:\n r.gl.uniform3iv(i, new Int32Array(o.shape));\n break;\n case 4:\n r.gl.uniform4iv(i, new Int32Array(o.shape));\n break;\n default:\n break;\n }\n if (e.outShapeStridesLocation) {\n let p = y.computeStrides(o.shape);\n switch (o.shape.length) {\n case 2:\n r.gl.uniform1iv(e.outShapeStridesLocation, new Int32Array(p));\n break;\n case 3:\n r.gl.uniform2iv(e.outShapeStridesLocation, new Int32Array(p));\n break;\n case 4:\n r.gl.uniform3iv(e.outShapeStridesLocation, new Int32Array(p));\n break;\n default:\n break;\n }\n }\n e.outTexShapeLocation && r.gl.uniform2i(e.outTexShapeLocation, o.texData.texShape[0], o.texData.texShape[1]), e.program.customUniforms && n && e.program.customUniforms.forEach((p, u) => {\n let c = e.customUniformLocations[u], l = n[u];\n if (p.type === \"float\")\n r.gl.uniform1fv(c, l);\n else if (p.type === \"vec2\")\n r.gl.uniform2fv(c, l);\n else if (p.type === \"vec3\")\n r.gl.uniform3fv(c, l);\n else if (p.type === \"vec4\")\n r.gl.uniform4fv(c, l);\n else if (p.type === \"int\")\n r.gl.uniform1iv(c, l);\n else if (p.type === \"ivec2\")\n r.gl.uniform2iv(c, l);\n else if (p.type === \"ivec3\")\n r.gl.uniform3iv(c, l);\n else if (p.type === \"ivec4\")\n r.gl.uniform4iv(c, l);\n else\n throw Error(`uniform type ${p.type} is not supported yet.`);\n }), r.executeProgram();\n}\nfunction B$(r, e, t10) {\n let o = \"\";\n e.concat(t10).forEach((a) => {\n let i = a.texData != null && a.texData.slice != null && a.texData.slice.flatOffset > 0;\n if (r.enableShapeUniforms && !a.isUniform) {\n let p = a.texData.texShape, { useSqueezeShape: u, uniformShape: c, keptDims: l } = Of(r.packedInputs, a.shape, p), m = \"\", d = \"\", f = \"\";\n if (c.length === 1 && r.packedInputs) {\n let k = [Math.ceil(p[0] / 2), Math.ceil(p[1] / 2)];\n m = `${k[0] > 1}_${k[1] > 1}`;\n } else if (c.length === 2 && !r.packedInputs)\n d = `${c[0] > 1}_${c[1] > 1}`;\n else if (c.length > 2 && !r.packedInputs) {\n let k = y.computeStrides(c);\n f = `${k[0] === p[1]}_${k[k.length - 1] === p[1]}`;\n }\n let h = a.shape.length, g = c.length === 2 && y.arraysEqual(a.shape, p), x = y.sizeFromShape(a.shape) === 1, b = S.getBroadcastDims(a.shape, t10.shape), C = !r.packedInputs && h === t10.shape.length && y.arraysEqual(p, t10.texData.texShape), w = r.packedInputs || c.length > 2 ? \"\" : `${p[0] > 1}_${p[1] > 1}`;\n o += `${h}_${C}_${u ? l : \"\"}_${c.length}_${x}_${b}_${g}_${m}_${d}_${f}_${w}_${i}`;\n } else {\n let p = a.isUniform ? \"uniform\" : a.texData.texShape;\n o += `${a.shape}_${p}_${i}`;\n }\n });\n let n = r.userCode, s = r.constructor.name;\n return s += \"_\" + o + \"_\" + n + `${O().getNumber(\"WEBGL_VERSION\")}`, s;\n}\nfunction lt(r) {\n return O().getBool(\"WEBGL_USE_SHAPES_UNIFORMS\") && r <= 4;\n}\nvar Pf = class {\n constructor(e) {\n this.variableNames = [\"A\"], this.packedInputs = false, this.packedOutput = true, this.outPackingScheme = Li.DENSE, this.customUniforms = [{ name: \"texShape\", type: \"ivec2\" }];\n let t10 = wt();\n this.outputShape = e, this.enableShapeUniforms = lt(this.outputShape.length), this.userCode = `\n ivec3 outCoordsFromFlatIndex(int index) {\n ${this.enableShapeUniforms ? Pu([\"r\", \"c\", \"d\"], e) : ps([\"r\", \"c\", \"d\"], e)}\n return ivec3(r, c, d);\n }\n\n void main() {\n ivec2 resTexRC = ivec2(resultUV.yx * vec2(texShape[0], texShape[1]));\n int index = 4 * (resTexRC.x * texShape[1] + resTexRC.y);\n\n vec4 result = vec4(0.);\n\n for (int i=0; i<4; i++) {\n int flatIndex = index + i;\n ivec3 rc = outCoordsFromFlatIndex(flatIndex);\n result[i] = getA(rc.x, rc.y, rc.z);\n }\n\n ${t10.output} = result;\n }\n `;\n }\n};\nvar Mf = class {\n constructor(e) {\n this.variableNames = [\"A\"], this.packedInputs = true, this.packedOutput = true, this.outPackingScheme = Li.DENSE, this.customUniforms = [{ name: \"texShape\", type: \"ivec2\" }];\n let t10 = wt();\n this.outputShape = e, this.enableShapeUniforms = lt(this.outputShape.length), this.userCode = `\n ivec3 outCoordsFromFlatIndex(int index) {\n ${this.enableShapeUniforms ? Pu([\"r\", \"c\", \"d\"], e) : ps([\"r\", \"c\", \"d\"], e)}\n return ivec3(r, c, d);\n }\n\n void main() {\n ivec2 resTexRC = ivec2(resultUV.yx * vec2(texShape[0], texShape[1]));\n int index = 4 * (resTexRC.x * texShape[1] + resTexRC.y);\n\n vec4 result = vec4(0.);\n\n for (int i=0; i<4; i++) {\n int flatIndex = index + i;\n ivec3 rc = outCoordsFromFlatIndex(flatIndex);\n result[i] = getChannel(getA(rc.x, rc.y, rc.z), vec2(rc.y, rc.z));\n }\n\n ${t10.output} = result;\n }\n `;\n }\n};\nvar Lf = class {\n constructor(e) {\n this.variableNames = [\"A\"], this.outTexUsage = ur.DOWNLOAD;\n let t10 = wt();\n this.outputShape = e, this.userCode = `\n ${Ff}\n\n void main() {\n float x = getAAtOutCoords();\n ${t10.output} = encode_float(x);\n }\n `;\n }\n};\nvar Bf = class {\n constructor(e) {\n this.variableNames = [\"A\"], this.packedInputs = true, this.packedOutput = false, this.outTexUsage = ur.DOWNLOAD;\n let t10 = wt();\n this.outputShape = e, this.userCode = `\n ${Ff}\n\n void main() {\n ivec3 coords = getOutputCoords();\n float x = getChannel(getAAtOutCoords(), vec2(coords.y, coords.z));\n ${t10.output} = encode_float(x);\n }\n `;\n }\n};\nvar U8 = { R: 0, G: 1, B: 2, A: 3 };\nvar Tl = class {\n constructor(e, t10 = false, o = \"RGBA\") {\n this.variableNames = [\"A\"], this.customUniforms = [{ name: \"texShape\", type: \"ivec2\" }];\n let n = wt();\n this.outputShape = e, this.enableShapeUniforms = lt(this.outputShape.length);\n let s = \"result\";\n t10 && (s = \"floor(result * 255. + 0.5)\");\n let a = \"\";\n for (let i = 0; i < o.length; i++) {\n let p = o[i];\n a += `\n if(offset == ${i}) {\n result = values[${U8[p]}];\n }`;\n }\n this.userCode = `\n ${this.enableShapeUniforms ? ac() : sc(e)}\n\n void main() {\n ivec3 coords = getOutputCoords();\n int flatIndex = getFlatIndex(coords);\n float result = 0.;\n int offset = imod(flatIndex, ${o.length});\n\n flatIndex = idiv(flatIndex, ${o.length}, 1.);\n\n int r = flatIndex / texShape[1];\n if (r < texShape[0]) {\n int c = imod(flatIndex, texShape[1]);\n vec2 uv = (vec2(c, r) + halfCR) / vec2(texShape[1], texShape[0]);\n vec4 values = ${n.texture2D}(A, uv);\n ${a}\n }\n ${n.output} = vec4(${s}, 0., 0., 0.);\n }\n `;\n }\n};\nvar Vf = class {\n constructor(e, t10 = false) {\n this.variableNames = [\"A\"], this.packedInputs = false, this.packedOutput = true, this.customUniforms = [{ name: \"texShape\", type: \"ivec2\" }];\n let o = wt();\n this.outputShape = e, this.enableShapeUniforms = lt(this.outputShape.length);\n let n = \"\", s = \"result\";\n t10 && (s = \"floor(result * 255. + 0.5)\");\n for (let a = 0; a <= 1; a++)\n for (let i = 0; i <= 1; i++) {\n let p = a * 2 + i;\n n += `\n localCoords = coords;\n if(localCoords[2] + ${i} < ${this.enableShapeUniforms ? \"outShape[2]\" : `${e[2]}`}) {\n localCoords[2] += ${i};\n if (localCoords[1] + ${a} < ${this.enableShapeUniforms ? \"outShape[1]\" : `${e[1]}`}) {\n localCoords[1] += ${a};\n\n flatIndex = getFlatIndex(localCoords);\n offset = imod(flatIndex, 4);\n\n flatIndex = idiv(flatIndex, 4, 1.);\n\n int r = flatIndex / texShape[1];\n int c = imod(flatIndex, texShape[1]);\n vec2 uv = (vec2(c, r) + halfCR) / vec2(texShape[1], texShape[0]);\n values = ${o.texture2D}(A, uv);\n\n if (offset == 0) {\n result[${p}] = values[0];\n } else if (offset == 1) {\n result[${p}] = values[1];\n } else if (offset == 2) {\n result[${p}] = values[2];\n } else {\n result[${p}] = values[3];\n }\n }\n }\n `;\n }\n this.userCode = `\n ${this.enableShapeUniforms ? ac() : sc(e)}\n\n void main() {\n ivec3 coords = getOutputCoords();\n\n vec4 result = vec4(0.);\n int flatIndex, r, c, offset;\n ivec3 localCoords;\n vec2 uv;\n vec4 values;\n\n ${n}\n\n ${o.output} = ${s};\n }\n `;\n }\n};\nvar $w = {};\nGe($w, { bindVertexProgramAttributeStreams: () => Sw, createBufferFromOutputTexture: () => vw, createFloat16MatrixTexture: () => xw, createFloat16PackedMatrixTexture: () => Cw, createFloat32MatrixTexture: () => gw, createIndexBuffer: () => hw, createPackedMatrixTexture: () => bw, createUnsignedBytesMatrixTexture: () => yw, createVertexBuffer: () => fw, createVertexShader: () => dw, downloadByteEncodedFloatMatrixFromOutputTexture: () => Nw, downloadFloat32MatrixFromBuffer: () => kw, downloadMatrixFromPackedOutputTexture: () => _w, downloadPackedMatrixFromBuffer: () => Tw, getInternalFormatForFloat16MatrixTexture: () => Wf, getInternalFormatForFloat16PackedMatrixTexture: () => Hf, getInternalFormatForFloat32MatrixTexture: () => zf, getInternalFormatForPackedMatrixTexture: () => Gf, getInternalFormatForUnsignedBytesMatrixTexture: () => Uf, uploadDenseMatrixToTexture: () => ww, uploadPixelDataToTexture: () => Iw });\nfunction dw(r) {\n let e = wt(), t10 = `${e.version}\n precision highp float;\n ${e.attribute} vec3 clipSpacePos;\n ${e.attribute} vec2 uv;\n ${e.varyingVs} vec2 resultUV;\n\n void main() {\n gl_Position = vec4(clipSpacePos, 1);\n resultUV = uv;\n }`;\n return qS(r, t10);\n}\nfunction fw(r) {\n let e = new Float32Array([-1, 1, 0, 0, 1, -1, -1, 0, 0, 0, 1, 1, 0, 1, 1, 1, -1, 0, 1, 0]);\n return QS(r, e);\n}\nfunction hw(r) {\n let e = new Uint16Array([0, 1, 2, 2, 1, 3]);\n return ZS(r, e);\n}\nfunction _l(r, e, t10, o, n, s) {\n ew(e, t10);\n let a = JS(r), i = r.TEXTURE_2D;\n return pe(r, () => r.bindTexture(i, a)), pe(r, () => r.texParameteri(i, r.TEXTURE_WRAP_S, r.CLAMP_TO_EDGE)), pe(r, () => r.texParameteri(i, r.TEXTURE_WRAP_T, r.CLAMP_TO_EDGE)), pe(r, () => r.texParameteri(i, r.TEXTURE_MIN_FILTER, r.NEAREST)), pe(r, () => r.texParameteri(i, r.TEXTURE_MAG_FILTER, r.NEAREST)), O().getNumber(\"WEBGL_VERSION\") === 1 ? pe(r, () => r.texImage2D(i, 0, o, e, t10, 0, n, s, null)) : pe(r, () => r.texStorage2D(i, 1, o, e, t10)), pe(r, () => r.bindTexture(r.TEXTURE_2D, null)), { texture: a, texShape: [t10, e] };\n}\nfunction zf(r) {\n return r.internalFormatFloat;\n}\nfunction gw(r, e, t10, o) {\n let [n, s] = Ou(e, t10);\n return _l(r, n, s, zf(o), o.textureFormatFloat, r.FLOAT);\n}\nfunction Wf(r) {\n return r.internalFormatHalfFloat;\n}\nfunction xw(r, e, t10, o) {\n let [n, s] = Ou(e, t10);\n return _l(r, n, s, Wf(o), o.textureFormatFloat, o.textureTypeHalfFloat);\n}\nfunction Uf(r) {\n return r.downloadTextureFormat;\n}\nfunction yw(r, e, t10, o) {\n let [n, s] = Ou(e, t10);\n return _l(r, n, s, Uf(o), r.RGBA, r.UNSIGNED_BYTE);\n}\nfunction Gf(r) {\n return r.internalFormatPackedFloat;\n}\nfunction bw(r, e, t10, o) {\n let [n, s] = Qs(e, t10);\n return _l(r, n, s, Gf(o), r.RGBA, r.FLOAT);\n}\nfunction Hf(r) {\n return r.internalFormatPackedHalfFloat;\n}\nfunction Cw(r, e, t10, o) {\n let [n, s] = Qs(e, t10);\n return _l(r, n, s, Hf(o), r.RGBA, o.textureTypeHalfFloat);\n}\nfunction Sw(r, e, t10) {\n return pe(r, () => r.bindBuffer(r.ARRAY_BUFFER, t10)), Af(r, e, \"clipSpacePos\", t10, 3, 20, 0) && Af(r, e, \"uv\", t10, 2, 20, 12);\n}\nfunction ww(r, e, t10, o, n, s) {\n pe(r, () => r.bindTexture(r.TEXTURE_2D, e));\n let a, i, p;\n n instanceof Uint8Array ? (a = new Uint8Array(t10 * o * 4), i = r.UNSIGNED_BYTE, p = r.RGBA) : (a = new Float32Array(t10 * o * 4), i = r.FLOAT, p = s.internalFormatPackedFloat), a.set(n), O().getNumber(\"WEBGL_VERSION\") === 2 ? pe(r, () => r.texSubImage2D(r.TEXTURE_2D, 0, 0, 0, t10, o, r.RGBA, i, a)) : pe(r, () => r.texImage2D(r.TEXTURE_2D, 0, p, t10, o, 0, r.RGBA, i, a)), pe(r, () => r.bindTexture(r.TEXTURE_2D, null));\n}\nfunction Iw(r, e, t10) {\n pe(r, () => r.bindTexture(r.TEXTURE_2D, e)), t10.data instanceof Uint8Array ? O().getNumber(\"WEBGL_VERSION\") === 2 ? pe(r, () => r.texSubImage2D(r.TEXTURE_2D, 0, 0, 0, t10.width, t10.height, r.RGBA, r.UNSIGNED_BYTE, t10.data)) : pe(r, () => r.texImage2D(r.TEXTURE_2D, 0, r.RGBA, t10.width, t10.height, 0, r.RGBA, r.UNSIGNED_BYTE, t10.data)) : O().getNumber(\"WEBGL_VERSION\") === 2 ? pe(r, () => r.texSubImage2D(r.TEXTURE_2D, 0, 0, 0, r.RGBA, r.UNSIGNED_BYTE, t10)) : pe(r, () => r.texImage2D(r.TEXTURE_2D, 0, r.RGBA, r.RGBA, r.UNSIGNED_BYTE, t10)), pe(r, () => r.bindTexture(r.TEXTURE_2D, null));\n}\nfunction vw(r, e, t10, o) {\n let n = r.createBuffer();\n pe(r, () => r.bindBuffer(r.PIXEL_PACK_BUFFER, n));\n let i = 4 * 4 * e * t10;\n return pe(r, () => r.bufferData(r.PIXEL_PACK_BUFFER, i, r.STREAM_READ)), pe(r, () => r.readPixels(0, 0, t10, e, r.RGBA, r.FLOAT, 0)), pe(r, () => r.bindBuffer(r.PIXEL_PACK_BUFFER, null)), n;\n}\nfunction kw(r, e, t10) {\n let o = r, n = new Float32Array(t10);\n return o.bindBuffer(o.PIXEL_PACK_BUFFER, e), o.getBufferSubData(o.PIXEL_PACK_BUFFER, 0, n), o.bindBuffer(o.PIXEL_PACK_BUFFER, null), n;\n}\nfunction Nw(r, e, t10, o) {\n let [n, s] = Ou(e, t10), a = 4, i = new Uint8Array(k$(e * t10, a));\n return pe(r, () => r.readPixels(0, 0, n, s, o.downloadTextureFormat, r.UNSIGNED_BYTE, i)), new Float32Array(i.buffer);\n}\nfunction Tw(r, e, t10, o, n, s, a, i) {\n let p = r, u = new Float32Array(N$(s, a));\n return p.bindBuffer(p.PIXEL_PACK_BUFFER, e), p.getBufferSubData(p.PIXEL_PACK_BUFFER, 0, u), p.bindBuffer(p.PIXEL_PACK_BUFFER, null), u;\n}\nfunction _w(r, e, t10) {\n let o = new Float32Array(e * t10 * 4);\n return pe(r, () => r.readPixels(0, 0, t10, e, r.RGBA, r.FLOAT, o)), o;\n}\nvar Lu = class {\n constructor(e) {\n this.outputTexture = null, this.program = null, this.disposed = false, this.itemsToPoll = [];\n let t10 = O().getNumber(\"WEBGL_VERSION\");\n if (e != null ? (this.gl = e, US(t10, e)) : this.gl = zr(t10), e = this.gl, O().getNumber(\"WEBGL_VERSION\") === 2) {\n let s = e;\n this.createVertexArray = () => pe(s, () => s.createVertexArray()), this.bindVertexArray = (a) => pe(s, () => s.bindVertexArray(a)), this.deleteVertexArray = (a) => pe(s, () => s.deleteVertexArray(a)), this.getVertexArray = () => pe(s, () => s.getParameter(s.VERTEX_ARRAY_BINDING));\n } else if (e != null) {\n let s = e.getExtension(\"OES_vertex_array_object\");\n if (s == null)\n throw new Error(\"All WebGL1 implementations are expected to offer OES_vertex_array_object.\");\n this.createVertexArray = () => pe(e, () => s.createVertexArrayOES()), this.bindVertexArray = (a) => pe(e, () => s.bindVertexArrayOES(a)), this.deleteVertexArray = (a) => pe(e, () => s.deleteVertexArrayOES(a)), this.getVertexArray = () => pe(e, () => e.getParameter(s.VERTEX_ARRAY_BINDING_OES));\n }\n let o = \"WEBGL_color_buffer_float\", n = \"EXT_color_buffer_half_float\";\n if (this.parallelCompilationExtension = this.gl.getExtension(\"KHR_parallel_shader_compile\"), O().getNumber(\"WEBGL_VERSION\") === 1) {\n let s = \"OES_texture_float\", a = \"OES_texture_half_float\";\n if (this.textureFloatExtension = tc(this.gl, s), Wr(this.gl, a))\n this.textureHalfFloatExtension = tc(this.gl, a);\n else if (O().get(\"WEBGL_FORCE_F16_TEXTURES\"))\n throw new Error(\"GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.\");\n if (this.colorBufferFloatExtension = this.gl.getExtension(o), Wr(this.gl, n))\n this.colorBufferHalfFloatExtension = tc(this.gl, n);\n else if (O().get(\"WEBGL_FORCE_F16_TEXTURES\"))\n throw new Error(\"GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.\");\n } else if (o = \"EXT_color_buffer_float\", Wr(this.gl, o))\n this.colorBufferFloatExtension = this.gl.getExtension(o);\n else if (Wr(this.gl, n))\n this.colorBufferHalfFloatExtension = this.gl.getExtension(n);\n else\n throw new Error(\"GL context does not support color renderable floats\");\n this.vertexBuffer = fw(this.gl), this.indexBuffer = hw(this.gl), this.framebuffer = tw(this.gl), this.textureConfig = vl(this.gl, this.textureHalfFloatExtension);\n }\n get debug() {\n return O().getBool(\"DEBUG\");\n }\n dispose() {\n if (this.disposed)\n return;\n 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.\");\n let e = this.gl;\n pe(e, () => e.finish()), pe(e, () => e.bindFramebuffer(e.FRAMEBUFFER, null)), pe(e, () => e.deleteFramebuffer(this.framebuffer)), pe(e, () => e.bindBuffer(e.ARRAY_BUFFER, null)), pe(e, () => e.bindBuffer(e.ELEMENT_ARRAY_BUFFER, null)), pe(e, () => e.deleteBuffer(this.indexBuffer)), this.disposed = true;\n }\n createFloat32MatrixTexture(e, t10) {\n return this.throwIfDisposed(), gw(this.gl, e, t10, this.textureConfig);\n }\n createFloat16MatrixTexture(e, t10) {\n return this.throwIfDisposed(), xw(this.gl, e, t10, this.textureConfig);\n }\n createUnsignedBytesMatrixTexture(e, t10) {\n return this.throwIfDisposed(), yw(this.gl, e, t10, this.textureConfig);\n }\n uploadPixelDataToTexture(e, t10) {\n this.throwIfDisposed(), Iw(this.gl, e, t10);\n }\n uploadDenseMatrixToTexture(e, t10, o, n) {\n this.throwIfDisposed(), ww(this.gl, e, t10, o, n, this.textureConfig);\n }\n createFloat16PackedMatrixTexture(e, t10) {\n return this.throwIfDisposed(), Cw(this.gl, e, t10, this.textureConfig);\n }\n createPackedMatrixTexture(e, t10) {\n return this.throwIfDisposed(), bw(this.gl, e, t10, this.textureConfig);\n }\n deleteMatrixTexture(e) {\n this.throwIfDisposed(), this.outputTexture === e && (Rf(this.gl, this.framebuffer), this.outputTexture = null), pe(this.gl, () => this.gl.deleteTexture(e));\n }\n downloadByteEncodedFloatMatrixFromOutputTexture(e, t10, o) {\n return this.downloadMatrixDriver(e, () => Nw(this.gl, t10, o, this.textureConfig));\n }\n downloadPackedMatrixFromBuffer(e, t10, o, n, s, a) {\n return Tw(this.gl, e, t10, o, n, s, a, this.textureConfig);\n }\n downloadFloat32MatrixFromBuffer(e, t10) {\n return kw(this.gl, e, t10);\n }\n createBufferFromTexture(e, t10, o) {\n this.bindTextureToFrameBuffer(e);\n let n = vw(this.gl, t10, o, this.textureConfig);\n return this.unbindTextureToFrameBuffer(), n;\n }\n createAndWaitForFence() {\n let e = this.createFence(this.gl);\n return this.pollFence(e);\n }\n createFence(e) {\n let t10, o;\n if (O().getBool(\"WEBGL_FENCE_API_ENABLED\")) {\n let n = e, s = n.fenceSync(n.SYNC_GPU_COMMANDS_COMPLETE, 0);\n e.flush(), o = () => {\n let a = n.clientWaitSync(s, 0, 0);\n return a === n.ALREADY_SIGNALED || a === n.CONDITION_SATISFIED;\n }, t10 = s;\n } else\n O().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION\") > 0 ? (t10 = this.beginQuery(), this.endQuery(), o = () => this.isQueryAvailable(t10, O().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION\"))) : o = () => true;\n return { query: t10, isFencePassed: o };\n }\n downloadMatrixFromPackedTexture(e, t10, o) {\n return this.downloadMatrixDriver(e, () => _w(this.gl, t10, o));\n }\n createProgram(e) {\n this.throwIfDisposed();\n let t10 = this.gl;\n this.vertexShader == null && (this.vertexShader = dw(t10));\n let o = XS(t10);\n pe(t10, () => t10.attachShader(o, this.vertexShader)), pe(t10, () => t10.attachShader(o, e)), YS(t10, o);\n let n;\n return n = Object.assign(o, { vao: this.createVertexArray() }), this.bindVertexArray(n.vao), pe(t10, () => t10.bindBuffer(t10.ELEMENT_ARRAY_BUFFER, this.indexBuffer)), console.assert(Sw(t10, n, this.vertexBuffer), \"gpgpu_util.bindVertexProgramAttributeStreams not fully successful.\"), this.debug && kl(t10, n), this.setProgram(n), n;\n }\n deleteProgram(e) {\n this.throwIfDisposed(), e === this.program && (this.program = null), e != null && (pe(this.gl, () => this.gl.deleteProgram(e)), this.deleteVertexArray(e.vao));\n }\n setProgram(e) {\n this.throwIfDisposed(), this.program = e, this.program != null && (this.bindVertexArray(this.program.vao), this.debug && kl(this.gl, this.program)), pe(this.gl, () => this.gl.useProgram(e));\n }\n getUniformLocation(e, t10, o = true) {\n return this.throwIfDisposed(), o ? rw(this.gl, e, t10) : ow(this.gl, e, t10);\n }\n getAttributeLocation(e, t10) {\n return this.throwIfDisposed(), pe(this.gl, () => this.gl.getAttribLocation(e, t10));\n }\n getUniformLocationNoThrow(e, t10) {\n return this.throwIfDisposed(), this.gl.getUniformLocation(e, t10);\n }\n setInputMatrixTexture(e, t10, o) {\n this.throwIfDisposed(), this.throwIfNoProgram(), nw(this.gl, e, t10, o);\n }\n setOutputMatrixTexture(e, t10, o) {\n this.setOutputMatrixTextureDriver(e, o, t10);\n }\n setOutputPackedMatrixTexture(e, t10, o) {\n this.throwIfDisposed();\n let [n, s] = Qs(t10, o);\n this.setOutputMatrixTextureDriver(e, n, s);\n }\n setOutputMatrixWriteRegion(e, t10, o, n) {\n this.setOutputMatrixWriteRegionDriver(o, e, n, t10);\n }\n setOutputPackedMatrixWriteRegion(e, t10, o, n) {\n throw new Error(\"setOutputPackedMatrixWriteRegion not implemented.\");\n }\n debugValidate() {\n this.program != null && kl(this.gl, this.program), rc(this.gl);\n }\n executeProgram() {\n this.throwIfDisposed(), this.throwIfNoProgram();\n let e = this.gl;\n if (this.debug) {\n let t10 = this.getVertexArray();\n console.assert(t10 === this.program.vao, \"VAO changed between setProgram and executeProgram!\"), this.debugValidate();\n }\n pe(e, () => e.drawElements(e.TRIANGLES, 6, e.UNSIGNED_SHORT, 0));\n }\n blockUntilAllProgramsCompleted() {\n this.throwIfDisposed(), pe(this.gl, () => this.gl.finish());\n }\n getQueryTimerExtension() {\n return this.disjointQueryTimerExtension == null && (this.disjointQueryTimerExtension = tc(this.gl, O().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION\") === 2 ? \"EXT_disjoint_timer_query_webgl2\" : \"EXT_disjoint_timer_query\")), this.disjointQueryTimerExtension;\n }\n getQueryTimerExtensionWebGL2() {\n return this.getQueryTimerExtension();\n }\n getQueryTimerExtensionWebGL1() {\n return this.getQueryTimerExtension();\n }\n beginQuery() {\n if (O().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION\") === 2) {\n let o = this.gl, n = this.getQueryTimerExtensionWebGL2(), s = o.createQuery();\n return o.beginQuery(n.TIME_ELAPSED_EXT, s), s;\n }\n let e = this.getQueryTimerExtensionWebGL1(), t10 = e.createQueryEXT();\n return e.beginQueryEXT(e.TIME_ELAPSED_EXT, t10), t10;\n }\n endQuery() {\n if (O().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION\") === 2) {\n let t10 = this.gl, o = this.getQueryTimerExtensionWebGL2();\n t10.endQuery(o.TIME_ELAPSED_EXT);\n return;\n }\n let e = this.getQueryTimerExtensionWebGL1();\n e.endQueryEXT(e.TIME_ELAPSED_EXT);\n }\n async waitForQueryAndGetTime(e) {\n return await y.repeatedTry(() => this.disposed || this.isQueryAvailable(e, O().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION\"))), this.getQueryTime(e, O().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION\"));\n }\n getQueryTime(e, t10) {\n if (t10 === 0)\n return null;\n if (t10 === 2) {\n let o = this.gl;\n return o.getQueryParameter(e, o.QUERY_RESULT) / 1e6;\n } else {\n let o = this.getQueryTimerExtensionWebGL1();\n return o.getQueryObjectEXT(e, o.QUERY_RESULT_EXT) / 1e6;\n }\n }\n isQueryAvailable(e, t10) {\n if (t10 === 0)\n return true;\n if (t10 === 2) {\n let o = this.gl, n = this.getQueryTimerExtensionWebGL2(), s = o.getQueryParameter(e, o.QUERY_RESULT_AVAILABLE);\n return this.disjoint == null && (this.disjoint = this.gl.getParameter(n.GPU_DISJOINT_EXT)), s && !this.disjoint;\n } else {\n let o = this.getQueryTimerExtensionWebGL1(), n = o.getQueryObjectEXT(e, o.QUERY_RESULT_AVAILABLE_EXT);\n return this.disjoint == null && (this.disjoint = this.gl.getParameter(o.GPU_DISJOINT_EXT)), n && !this.disjoint;\n }\n }\n pollFence(e) {\n return new Promise((t10) => {\n this.addItemToPoll(() => e.isFencePassed(), () => t10());\n });\n }\n pollItems() {\n let e = G8(this.itemsToPoll.map((t10) => t10.isDoneFn));\n for (let t10 = 0; t10 <= e; ++t10) {\n let { resolveFn: o } = this.itemsToPoll[t10];\n o();\n }\n this.itemsToPoll = this.itemsToPoll.slice(e + 1);\n }\n addItemToPoll(e, t10) {\n if (this.itemsToPoll.push({ isDoneFn: e, resolveFn: t10 }), this.itemsToPoll.length > 1)\n return;\n let o;\n \"setTimeoutCustom\" in O().platform && (o = O().platform.setTimeoutCustom.bind(O().platform)), y.repeatedTry(() => (this.pollItems(), this.itemsToPoll.length === 0), () => 0, null, o);\n }\n bindTextureToFrameBuffer(e) {\n this.throwIfDisposed(), Nl(this.gl, e, this.framebuffer), this.debug && rc(this.gl);\n }\n unbindTextureToFrameBuffer() {\n this.outputTexture != null ? (Nl(this.gl, this.outputTexture, this.framebuffer), this.debug && rc(this.gl)) : Rf(this.gl, this.framebuffer);\n }\n downloadMatrixDriver(e, t10) {\n this.bindTextureToFrameBuffer(e);\n let o = t10();\n return this.unbindTextureToFrameBuffer(), o;\n }\n setOutputMatrixTextureDriver(e, t10, o) {\n this.throwIfDisposed();\n let n = this.gl;\n Nl(n, e, this.framebuffer), this.debug && rc(n), this.outputTexture = e, pe(n, () => n.viewport(0, 0, t10, o)), pe(n, () => n.scissor(0, 0, t10, o));\n }\n setOutputMatrixWriteRegionDriver(e, t10, o, n) {\n this.throwIfDisposed(), pe(this.gl, () => this.gl.scissor(e, t10, o, n));\n }\n throwIfDisposed() {\n if (this.disposed)\n throw new Error(\"Attempted to use disposed GPGPUContext.\");\n }\n throwIfNoProgram() {\n if (this.program == null)\n throw new Error(\"No GPU program is currently set.\");\n }\n};\nfunction G8(r) {\n let e = 0;\n for (; e < r.length && r[e](); ++e)\n ;\n return e - 1;\n}\nvar { addImpl: V$, bincountImpl: Kf, bincountReduceImpl: z$, castImpl: W$, ceilImpl: U$, concatImpl: G$, equalImpl: H$, expImpl: K$, expm1Impl: q$, floorImpl: j$, gatherNdImpl: X$, gatherV2Impl: Y$, greaterImpl: Q$, greaterEqualImpl: Z$, lessImpl: J$, lessEqualImpl: eE, linSpaceImpl: tE, logImpl: rE, maxImpl: oE, maximumImpl: nE, minimumImpl: sE, multiplyImpl: aE, negImpl: iE, notEqualImpl: uE, prodImpl: pE, raggedGatherImpl: cE, raggedRangeImpl: lE, raggedTensorToTensorImpl: mE, rangeImpl: dE, rsqrtImpl: fE, scatterImpl: hE, sigmoidImpl: gE, simpleAbsImpl: qf, sliceImpl: xE, sparseFillEmptyRowsImpl: yE, sparseReshapeImpl: bE, sparseSegmentReductionImpl: jf, sqrtImpl: CE, stridedSliceImpl: SE, stringNGramsImpl: wE, stringSplitImpl: IE, stringToHashBucketFastImpl: vE, subImpl: kE, tileImpl: NE, topKImpl: TE, transposeImpl: Bu, uniqueImpl: _E } = Zp;\nfunction Ew(r, e) {\n return [\"x\", \"y\", \"z\", \"w\", \"u\", \"v\"].slice(0, e).map((t10) => `${r}.${t10}`);\n}\nfunction Et(r, e) {\n return e === 1 ? [r] : Ew(r, e);\n}\nfunction $E(r, e) {\n if (r === 1)\n return \"rc\";\n let t10 = \"\";\n for (let o = 0; o < r; o++)\n t10 += e[o], o < r - 1 && (t10 += \",\");\n return t10;\n}\nvar Xf = class {\n constructor(e) {\n if (this.variableNames = [\"A\"], this.packedInputs = false, this.packedOutput = true, this.outputShape = e, this.rank = e.length, this.enableShapeUniforms = lt(this.outputShape.length), this.rank === 0)\n this.userCode = `\n void main() {\n setOutput(vec4(getA(), 0., 0., 0.));\n }\n `;\n else {\n let t10 = Et(\"rc\", this.rank), o = $e(this.rank), n = this.getOutOfBoundsCondition(t10), s = this.getSetup(t10), a = this.getOutput(t10);\n this.userCode = `\n void main() {\n ${o} rc = getOutputCoords();\n\n if(${n}) {\n setOutput(vec4(0));\n } else {\n ${s}\n\n setOutput(vec4(${a}));\n }\n }\n `;\n }\n }\n getSourceCoordsArr(e) {\n let t10 = [];\n for (let o = 0; o <= 1; o++)\n for (let n = 0; n <= 1; n++) {\n let s = `${o === 0 ? \"r\" : \"rp1\"}, ${n === 0 ? \"c\" : \"cp1\"}`;\n for (let a = 2; a < this.rank; a++)\n s = `${e[e.length - 1 - a]},` + s;\n t10.push(s);\n }\n return t10;\n }\n getOutOfBoundsCondition(e) {\n if (this.rank === 1)\n return `rc > ${this.enableShapeUniforms ? \"outShape\" : this.outputShape[0]}`;\n let t10 = \"\";\n for (let o = this.rank - 2; o < this.rank; o++)\n t10 += `${e[o]} >= ${this.enableShapeUniforms ? `outShape[${o}]` : this.outputShape[o]}`, o < this.rank - 1 && (t10 += \"||\");\n return t10;\n }\n getSetup(e) {\n if (this.rank === 1)\n return \"\";\n let t10 = e.slice(-2), o = this.enableShapeUniforms ? `outShape[${this.rank} - 1]` : this.outputShape[this.rank - 1], n = this.enableShapeUniforms ? `outShape[${this.rank} - 2]` : this.outputShape[this.rank - 2];\n return `\n int r = ${t10[0]};\n int c = ${t10[1]};\n int rp1 = r + 1;\n int cp1 = c + 1;\n\n bool cEdge = cp1 >= ${o};\n bool rEdge = rp1 >= ${n};\n `;\n }\n getOutput(e) {\n let t10 = this.getSourceCoordsArr(e);\n return this.rank === 1 ? `getA(rc), (rc + 1 >= ${this.enableShapeUniforms ? \"outShape\" : this.outputShape[0]} ? 0. : getA(rc + 1)), 0, 0` : `getA(${t10[0]}),\n cEdge ? 0. : getA(${t10[1]}),\n rEdge ? 0. : getA(${t10[2]}),\n rEdge || cEdge ? 0. : getA(${t10[3]})`;\n }\n};\nvar mc = class {\n constructor(e, t10) {\n this.variableNames = [\"A\"], this.packedInputs = true, this.packedOutput = true, this.customUniforms = [{ name: \"inputShape\", type: \"ivec3\" }], this.outputShape = e, this.enableShapeUniforms = lt(this.outputShape.length);\n let o = \"\";\n for (let n = 0; n < 4; n++) {\n let s = \"thisRC = rc;\";\n n % 2 === 1 && (s += \"thisRC.z += 1;\"), n > 1 && (s += \"thisRC.y += 1;\"), o += `\n ${s}\n ${n > 0 ? \"if(thisRC.y < rows && thisRC.z < cols){\" : \"\"}\n int flatIndex = getFlatIndex(thisRC);\n\n ivec3 inputRC = inputCoordsFromReshapedOutCoords(flatIndex);\n vec2 inputRCInnerDims = vec2(float(inputRC.y),float(inputRC.z));\n\n result[${n}] =\n getChannel(getA(inputRC.x, inputRC.y, inputRC.z), inputRCInnerDims);\n ${n > 0 ? \"}\" : \"\"}\n `;\n }\n this.userCode = `\n ${H8(t10, this.enableShapeUniforms)}\n ${this.enableShapeUniforms ? ac() : sc(e)}\n\n void main() {\n ivec3 rc = getOutputCoords();\n\n vec4 result = vec4(0.);\n\n ivec3 thisRC;\n int rows = ${this.enableShapeUniforms ? \"outShape[1]\" : e[1]};\n int cols = ${this.enableShapeUniforms ? \"outShape[2]\" : e[2]};\n\n ${o}\n\n setOutput(result);\n }\n `;\n }\n};\nfunction H8(r, e) {\n return `\n ivec3 inputCoordsFromReshapedOutCoords(int index) {\n ${e ? A$([\"r\", \"c\", \"d\"], \"inputShape\") : ps([\"r\", \"c\", \"d\"], r)}\n return ivec3(r, c, d);\n }\n `;\n}\nvar Yf = class {\n constructor(e) {\n this.gpgpu = e, this.numUsedTextures = 0, this.numFreeTextures = 0, this._numBytesAllocated = 0, this._numBytesFree = 0, this.freeTextures = {}, this.logEnabled = false, this.usedTextures = {};\n }\n acquireTexture(e, t10, o) {\n let n = AE(t10, o), s = RE(e, n, o);\n s in this.freeTextures || (this.freeTextures[s] = []), s in this.usedTextures || (this.usedTextures[s] = []);\n let a = EE(e, n, this.gpgpu.gl, this.gpgpu.textureConfig, o);\n if (this.freeTextures[s].length > 0) {\n this.numFreeTextures--, this.numUsedTextures++, this._numBytesFree -= a, this.log();\n let p = this.freeTextures[s].shift();\n return this.usedTextures[s].push(p), p;\n }\n let i;\n return n === Zt.PACKED_2X2_FLOAT32 ? i = this.gpgpu.createPackedMatrixTexture(e[0], e[1]) : n === Zt.PACKED_2X2_FLOAT16 ? i = this.gpgpu.createFloat16PackedMatrixTexture(e[0], e[1]) : n === Zt.UNPACKED_FLOAT32 ? i = this.gpgpu.createFloat32MatrixTexture(e[0], e[1]) : n === Zt.UNPACKED_FLOAT16 ? i = this.gpgpu.createFloat16MatrixTexture(e[0], e[1]) : n === Zt.PACKED_4X1_UNSIGNED_BYTE && (i = this.gpgpu.createUnsignedBytesMatrixTexture(e[0], e[1])), this.usedTextures[s].push(i), this.numUsedTextures++, this._numBytesAllocated += a, this.log(), i;\n }\n releaseTexture(e, t10, o, n) {\n if (this.freeTextures == null)\n return;\n let s = AE(o, n), a = RE(t10, s, n);\n a in this.freeTextures || (this.freeTextures[a] = []);\n let i = EE(t10, s, this.gpgpu.gl, this.gpgpu.textureConfig, n), p = O().get(\"WEBGL_DELETE_TEXTURE_THRESHOLD\");\n p !== -1 && this._numBytesAllocated > p ? (this.gpgpu.deleteMatrixTexture(e.texture), this._numBytesAllocated -= i) : (this.freeTextures[a].push(e), this.numFreeTextures++, this._numBytesFree += i), this.numUsedTextures--;\n let u = this.usedTextures[a], c = u.indexOf(e);\n if (c < 0)\n throw new Error(\"Cannot release a texture that was never provided by this texture manager\");\n u.splice(c, 1), this.log();\n }\n log() {\n if (!this.logEnabled)\n return;\n let e = this.numFreeTextures + this.numUsedTextures;\n console.log(\"Free/Used\", `${this.numFreeTextures} / ${this.numUsedTextures}`, `(${e})`);\n let t10 = this._numBytesFree / this._numBytesAllocated;\n console.log(`Bytes allocated: ${this._numBytesAllocated}`), console.log(`Bytes unused: ${this._numBytesFree} (${Math.round(100 * t10)}%)`);\n }\n get numBytesAllocated() {\n return this._numBytesAllocated;\n }\n get numBytesFree() {\n return this._numBytesFree;\n }\n getNumUsedTextures() {\n return this.numUsedTextures;\n }\n getNumFreeTextures() {\n return this.numFreeTextures;\n }\n dispose() {\n if (this.freeTextures != null) {\n for (let e in this.freeTextures)\n this.freeTextures[e].forEach((t10) => {\n this.gpgpu.deleteMatrixTexture(t10.texture);\n });\n for (let e in this.usedTextures)\n this.usedTextures[e].forEach((t10) => {\n this.gpgpu.deleteMatrixTexture(t10.texture);\n });\n this.freeTextures = null, this.usedTextures = null, this.numUsedTextures = 0, this.numFreeTextures = 0, this._numBytesAllocated = 0, this._numBytesFree = 0;\n }\n }\n};\nfunction K8(r, e) {\n let t10 = r;\n if (e === t10.R32F)\n return 4;\n if (e === t10.R16F)\n return 2;\n if (e === t10.RGBA32F)\n return 16;\n if (e === r.RGBA)\n return 16;\n if (e === t10.RGBA16F)\n return 8;\n if (e === t10.RGBA8)\n return 4;\n throw new Error(`Unknown internal format ${e}`);\n}\nfunction EE(r, e, t10, o, n) {\n let s = q8(e, o), a;\n if (n) {\n let [p, u] = Qs(r[0], r[1]);\n a = p * u;\n } else {\n let [p, u] = Ou(r[0], r[1]);\n a = p * u;\n }\n let i = K8(t10, s);\n return a * i;\n}\nfunction q8(r, e) {\n switch (r) {\n case Zt.PACKED_2X2_FLOAT32:\n return Gf(e);\n case Zt.PACKED_2X2_FLOAT16:\n return Hf(e);\n case Zt.UNPACKED_FLOAT32:\n return zf(e);\n case Zt.UNPACKED_FLOAT16:\n return Wf(e);\n case Zt.PACKED_4X1_UNSIGNED_BYTE:\n return Uf(e);\n default:\n throw new Error(`Unknown physical texture type ${r}`);\n }\n}\nfunction j8(r) {\n return O().getBool(\"WEBGL_RENDER_FLOAT32_ENABLED\") ? r ? Zt.PACKED_2X2_FLOAT32 : Zt.UNPACKED_FLOAT32 : r ? Zt.PACKED_2X2_FLOAT16 : Zt.UNPACKED_FLOAT16;\n}\nfunction AE(r, e) {\n if (r === ur.UPLOAD)\n return Zt.PACKED_2X2_FLOAT32;\n if (r === ur.RENDER || r == null)\n return j8(e);\n if (r === ur.DOWNLOAD || r === ur.PIXELS)\n return Zt.PACKED_4X1_UNSIGNED_BYTE;\n throw new Error(`Unknown logical texture type ${r}`);\n}\nfunction RE(r, e, t10) {\n return `${r[0]}_${r[1]}_${e}_${t10}`;\n}\nvar Jt = class {\n constructor(e, t10) {\n this.variableNames = [\"A\"], this.outputShape = e, this.enableShapeUniforms = lt(this.outputShape.length), this.userCode = `\n float unaryOperation(float x) {\n ${t10}\n }\n\n void main() {\n float x = getAAtOutCoords();\n float y = unaryOperation(x);\n\n setOutput(y);\n }\n `;\n }\n};\nvar zt = \"if (isnan(x)) return x;\";\nvar DE = \"return x;\";\nvar Aw = \"return abs(x);\";\nvar FE = \"return (x >= 0.0) ? x : (exp(x) - 1.0);\";\nvar OE = zt + `\n return (x < 0.0) ? 0.0 : x;\n`;\nvar PE = zt + `\n return (x < 0.0) ? 0.0 : min(6.0, x);\n`;\nvar Zs = \"return x;\";\nvar ME = \"return 1.0 / (1.0 + exp(-1.0 * x));\";\nvar BE = \"return x;\";\nvar VE = `\n vec4 result;\n\n result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0);\n result.g = (x.g >= 0.0) ? x.g : (exp(x.g) - 1.0);\n result.b = (x.b >= 0.0) ? x.b : (exp(x.b) - 1.0);\n result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0);\n\n return result;\n`;\nvar zE = `\n vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0)));\n bvec4 isNaN = isnan(x);\n\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n`;\nvar WE = `\n vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0)));\n bvec4 isNaN = isnan(x);\n\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n`;\nvar UE = \"return 1.0 / (1.0 + exp(-1.0 * x));\";\nvar Er = class {\n constructor(e, t10) {\n this.variableNames = [\"A\"], this.packedInputs = true, this.packedOutput = true, this.outputShape = e, this.enableShapeUniforms = lt(this.outputShape.length), this.userCode = `\n vec4 unaryOperation(vec4 x) {\n ${t10}\n }\n\n void main() {\n vec4 x = getAAtOutCoords();\n vec4 y = unaryOperation(x);\n\n setOutput(y);\n }\n `;\n }\n};\nvar Qf = class {\n constructor(e) {\n this.variableNames = [\"A\"], this.packedInputs = true, this.packedOutput = false, this.outputShape = e, this.enableShapeUniforms = lt(this.outputShape.length);\n let t10 = e.length, o = Et(\"rc\", t10), n = $e(t10), s = $E(t10, o), a = o.slice(-2), i = t10 <= 1 ? \"rc\" : `vec2(${a.join(\",\")})`;\n this.userCode = `\n void main() {\n ${n} rc = getOutputCoords();\n vec4 packedInput = getA(${s});\n\n setOutput(getChannel(packedInput, ${i}));\n }\n `;\n }\n};\nvar Y8 = Vt.whereImpl;\nvar Q8 = 1e-7;\nvar Z8 = 1e-4;\nvar Zf = {};\nfunction J8(r) {\n return r in Zf || (Zf[r] = {}), Zf[r];\n}\nvar eY = O().getNumber(\"CPU_HANDOFF_SIZE_THRESHOLD\");\nvar tY = 600;\nfunction rY() {\n return O().global.screen == null ? 1024 : O().global.screen.height * O().global.screen.width * window.devicePixelRatio * tY / 1024 / 1024;\n}\nvar Vi = class extends Zr {\n constructor(e) {\n if (super(), this.pendingRead = /* @__PURE__ */ new WeakMap(), this.pendingDisposal = /* @__PURE__ */ new WeakSet(), this.dataRefCount = /* @__PURE__ */ new WeakMap(), this.numBytesInGPU = 0, this.uploadWaitMs = 0, this.downloadWaitMs = 0, this.lastGlFlushTime = 0, this.warnedAboutMemory = false, this.pendingDeletes = 0, this.disposed = false, !O().getBool(\"HAS_WEBGL\"))\n throw new Error(\"WebGL is not supported on this device\");\n let t10;\n if (e != null) {\n if (e instanceof Lu)\n t10 = e;\n else {\n let o = zr(O().getNumber(\"WEBGL_VERSION\"), e);\n t10 = new Lu(o);\n }\n this.binaryCache = {}, this.gpgpuCreatedLocally = false;\n } else {\n let o = zr(O().getNumber(\"WEBGL_VERSION\"));\n t10 = new Lu(o), this.binaryCache = J8(O().getNumber(\"WEBGL_VERSION\")), this.gpgpuCreatedLocally = true;\n }\n this.gpgpu = t10, this.canvas = this.gpgpu.gl.canvas, this.textureManager = new Yf(this.gpgpu), this.numMBBeforeWarning = rY(), this.texData = new Fo(this, sr());\n }\n nextDataId() {\n return Vi.nextDataId++;\n }\n numDataIds() {\n return this.texData.numDataIds() - this.pendingDeletes;\n }\n writeTexture(e, t10, o, n, s, a) {\n let i = this.makeTensorInfo(t10, o), p = this.texData.get(i.dataId);\n p.isPacked = false, p.texture = { texture: e, texShape: [n, s] }, p.texShape = [n, s];\n let u = oc(t10), c = new Tl(u, false, a), l = this.runWebGLProgram(c, [i], o, [[n, s]]);\n return l.shape = t10, p.texture = null, this.disposeIntermediateTensorInfo(i), l.dataId;\n }\n write(e, t10, o) {\n if ((O().getBool(\"WEBGL_CHECK_NUMERICAL_PROBLEMS\") || O().getBool(\"DEBUG\")) && this.checkNumericalProblems(e), o === \"complex64\" && e != null)\n throw new Error(\"Cannot write to a complex64 dtype. Please use tf.complex(real, imag).\");\n let n = { id: this.nextDataId() };\n return this.texData.set(n, { shape: t10, dtype: o, values: e, usage: ur.UPLOAD, refCount: 1 }), n;\n }\n refCount(e) {\n return this.texData.has(e) ? this.texData.get(e).refCount : 0;\n }\n incRef(e) {\n let t10 = this.texData.get(e);\n t10.refCount++;\n }\n decRef(e) {\n if (this.texData.has(e)) {\n let t10 = this.texData.get(e);\n t10.refCount--;\n }\n }\n move(e, t10, o, n, s) {\n if (O().getBool(\"DEBUG\") && this.checkNumericalProblems(t10), n === \"complex64\")\n throw new Error(\"Cannot write to a complex64 dtype. Please use tf.complex(real, imag).\");\n this.texData.set(e, { shape: o, dtype: n, values: t10, usage: ur.UPLOAD, refCount: s });\n }\n disposeIntermediateTensorInfo(e) {\n this.disposeData(e.dataId);\n }\n readSync(e) {\n let t10 = this.texData.get(e), { values: o, dtype: n, complexTensorInfos: s, slice: a, shape: i, isPacked: p } = t10;\n if (a != null) {\n let m;\n p ? m = new Er(i, Zs) : m = new Jt(i, Zs);\n let d = this.runWebGLProgram(m, [{ dataId: e, shape: i, dtype: n }], n), f = this.readSync(d.dataId);\n return this.disposeIntermediateTensorInfo(d), f;\n }\n if (o != null)\n return this.convertAndCacheOnCPU(e);\n if (n === \"string\")\n return o;\n let u = this.activeTimers != null, c;\n u && (c = y.now());\n let l;\n if (n === \"complex64\") {\n let m = this.readSync(s.real.dataId), d = this.readSync(s.imag.dataId);\n l = S.mergeRealAndImagArrays(m, d);\n } else\n l = this.getValuesFromTexture(e);\n return u && (this.downloadWaitMs += y.now() - c), this.convertAndCacheOnCPU(e, l);\n }\n async read(e) {\n if (this.pendingRead.has(e)) {\n let f = this.pendingRead.get(e);\n return new Promise((h) => f.push(h));\n }\n let t10 = this.texData.get(e), { values: o, shape: n, slice: s, dtype: a, complexTensorInfos: i, isPacked: p } = t10;\n if (s != null) {\n let f;\n p ? f = new Er(n, Zs) : f = new Jt(n, Zs);\n let h = this.runWebGLProgram(f, [{ dataId: e, shape: n, dtype: a }], a), g = this.read(h.dataId);\n return this.disposeIntermediateTensorInfo(h), g;\n }\n if (o != null)\n return this.convertAndCacheOnCPU(e);\n if (O().getBool(\"DEBUG\") && !O().getBool(\"WEBGL_DOWNLOAD_FLOAT_ENABLED\") && O().getNumber(\"WEBGL_VERSION\") === 2)\n throw new Error(\"tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.\");\n let u = null, c;\n if (a !== \"complex64\" && O().get(\"WEBGL_BUFFER_SUPPORTED\")) {\n c = this.decode(e);\n let f = this.texData.get(c.dataId);\n u = this.gpgpu.createBufferFromTexture(f.texture.texture, ...Il(n));\n }\n this.pendingRead.set(e, []), a !== \"complex64\" && await this.gpgpu.createAndWaitForFence();\n let l;\n if (a === \"complex64\") {\n let f = await Promise.all([this.read(i.real.dataId), this.read(i.imag.dataId)]), h = f[0], g = f[1];\n l = S.mergeRealAndImagArrays(h, g);\n } else if (u == null)\n l = this.getValuesFromTexture(e);\n else {\n let f = y.sizeFromShape(n);\n l = this.gpgpu.downloadFloat32MatrixFromBuffer(u, f);\n }\n if (c != null && this.disposeIntermediateTensorInfo(c), u != null) {\n let f = this.gpgpu.gl;\n pe(f, () => f.deleteBuffer(u));\n }\n let m = this.convertAndCacheOnCPU(e, l), d = this.pendingRead.get(e);\n return this.pendingRead.delete(e), d.forEach((f) => f(m)), this.pendingDisposal.has(e) && (this.pendingDisposal.delete(e), this.disposeData(e) && sr().removeDataId(e, this), this.pendingDeletes--), m;\n }\n readToGPU(e, t10 = {}) {\n let o = this.texData.get(e), { values: n, shape: s, slice: a, dtype: i, isPacked: p, texture: u } = o;\n if (i === \"complex64\")\n throw new Error(\"Does not support reading texture for complex64 dtype.\");\n if (a != null) {\n let d;\n p ? d = new Er(s, Zs) : d = new Jt(s, Zs);\n let f = this.runWebGLProgram(d, [{ dataId: e, shape: s, dtype: i }], i), h = this.readToGPU(f, t10);\n return this.disposeIntermediateTensorInfo(f), h;\n }\n if (u == null)\n throw n != null ? new Error(\"Data is not on GPU but on CPU.\") : new Error(\"There is no data on GPU or CPU.\");\n let c = this.decode(e, t10.customTexShape), l = sr().makeTensorFromTensorInfo(c), m = this.texData.get(c.dataId);\n return Object.assign({ tensorRef: l }, m.texture);\n }\n bufferSync(e) {\n let t10 = this.readSync(e.dataId);\n if (e.dtype === \"string\")\n try {\n let o = t10.map((n) => y.decodeString(n));\n return le(e.shape, e.dtype, o);\n } catch (o) {\n throw new Error(\"Failed to decode encoded string bytes into utf-8\");\n }\n return le(e.shape, e.dtype, t10);\n }\n checkNumericalProblems(e) {\n if (e != null)\n for (let t10 = 0; t10 < e.length; t10++) {\n let o = e[t10];\n if (!KS(o))\n throw O().getBool(\"WEBGL_RENDER_FLOAT32_CAPABLE\") ? Error(`The value ${o} cannot be represented with your current settings. Consider enabling float32 rendering: 'tf.env().set('WEBGL_RENDER_FLOAT32_ENABLED', true);'`) : Error(`The value ${o} cannot be represented on this device.`);\n }\n }\n getValuesFromTexture(e) {\n let { shape: t10, dtype: o, isPacked: n } = this.texData.get(e), s = y.sizeFromShape(t10);\n if (O().getBool(\"WEBGL_DOWNLOAD_FLOAT_ENABLED\")) {\n let m = this.decode(e), d = this.texData.get(m.dataId), f = this.gpgpu.downloadMatrixFromPackedTexture(d.texture.texture, ...Il(t10)).subarray(0, s);\n return this.disposeIntermediateTensorInfo(m), f;\n }\n let a = O().getBool(\"WEBGL_PACK\") && n === true, i = a ? oc(t10) : t10, p = a ? new Bf(i) : new Lf(i), u = this.runWebGLProgram(p, [{ shape: i, dtype: o, dataId: e }], \"float32\"), c = this.texData.get(u.dataId), l = this.gpgpu.downloadByteEncodedFloatMatrixFromOutputTexture(c.texture.texture, c.texShape[0], c.texShape[1]).subarray(0, s);\n return this.disposeIntermediateTensorInfo(u), l;\n }\n timerAvailable() {\n return O().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE\") > 0;\n }\n time(e) {\n let t10 = this.activeTimers, o = [], n = false;\n this.programTimersStack == null ? (this.programTimersStack = o, n = true) : this.activeTimers.push(o), this.activeTimers = o, e();\n let s = y.flatten(this.activeTimers.map((p) => p.query)).filter((p) => p != null), a = y.flatten(this.activeTimers.map((p) => p.name)).filter((p) => p != null);\n this.activeTimers = t10, n && (this.programTimersStack = null);\n let i = { uploadWaitMs: this.uploadWaitMs, downloadWaitMs: this.downloadWaitMs, kernelMs: null, wallMs: null };\n return (async () => {\n if (O().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE\") > 0) {\n let p = await Promise.all(s);\n i.kernelMs = y.sum(p), i.getExtraProfileInfo = () => p.map((u, c) => ({ name: a[c], ms: u })).map((u) => `${u.name}: ${u.ms}`).join(\", \");\n } else\n i.kernelMs = { error: \"WebGL query timers are not supported in this environment.\" };\n return this.uploadWaitMs = 0, this.downloadWaitMs = 0, i;\n })();\n }\n memory() {\n return { unreliable: false, numBytesInGPU: this.numBytesInGPU, numBytesInGPUAllocated: this.textureManager.numBytesAllocated, numBytesInGPUFree: this.textureManager.numBytesFree };\n }\n startTimer() {\n return O().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE\") > 0 ? this.gpgpu.beginQuery() : { startMs: y.now(), endMs: null };\n }\n endTimer(e) {\n return O().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE\") > 0 ? (this.gpgpu.endQuery(), e) : (e.endMs = y.now(), e);\n }\n async getQueryTime(e) {\n if (O().getNumber(\"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE\") > 0)\n return this.gpgpu.waitForQueryAndGetTime(e);\n let t10 = e;\n return t10.endMs - t10.startMs;\n }\n disposeData(e, t10 = false) {\n if (this.pendingDisposal.has(e))\n return false;\n if (!this.texData.has(e))\n return true;\n if (t10 ? this.texData.get(e).refCount = 0 : this.texData.get(e).refCount--, !t10 && this.texData.get(e).refCount > 0)\n return false;\n if (this.pendingRead.has(e))\n return this.pendingDisposal.add(e), this.pendingDeletes++, false;\n this.releaseGPUData(e);\n let { complexTensorInfos: o } = this.texData.get(e);\n return o != null && (this.disposeData(o.real.dataId, t10), this.disposeData(o.imag.dataId, t10)), this.texData.delete(e), true;\n }\n releaseGPUData(e) {\n let { texture: t10, dtype: o, texShape: n, usage: s, isPacked: a, slice: i } = this.texData.get(e), p = i && i.origDataId || e, u = this.dataRefCount.get(p);\n u > 1 ? this.dataRefCount.set(p, u - 1) : (this.dataRefCount.delete(p), t10 != null && (this.numBytesInGPU -= this.computeBytes(n, o), this.textureManager.releaseTexture(t10, n, s, a)));\n let c = this.texData.get(e);\n c.texture = null, c.texShape = null, c.isPacked = false, c.slice = null;\n }\n getTexture(e) {\n return this.uploadToGPU(e), this.texData.get(e).texture.texture;\n }\n getDataInfo(e) {\n return this.texData.get(e);\n }\n shouldExecuteOnCPU(e, t10 = eY) {\n return O().getBool(\"WEBGL_CPU_FORWARD\") && e.every((o) => this.texData.get(o.dataId).texture == null && y.sizeFromShape(o.shape) < t10);\n }\n getGPGPUContext() {\n return this.gpgpu;\n }\n where(e) {\n S.warn(\"tf.where() in webgl locks the UI thread. Call tf.whereAsync() instead\");\n let t10 = e.dataSync();\n return Y8(e.shape, t10);\n }\n packedUnaryOp(e, t10, o) {\n let n = new Er(e.shape, t10), s = this.compileAndRun(n, [e], o);\n return sr().makeTensorFromTensorInfo(s);\n }\n abs(e) {\n if (this.shouldExecuteOnCPU([e]) && e.dtype !== \"complex64\") {\n let n = qf(this.texData.get(e.dataId).values);\n return this.makeOutput(e.shape, e.dtype, n);\n }\n if (O().getBool(\"WEBGL_PACK_UNARY_OPERATIONS\"))\n return this.packedUnaryOp(e, Aw, e.dtype);\n let t10 = new Jt(e.shape, Aw), o = this.compileAndRun(t10, [e]);\n return sr().makeTensorFromTensorInfo(o);\n }\n makeTensorInfo(e, t10, o) {\n let n;\n if (t10 === \"string\" && o != null && o.length > 0 && y.isString(o[0])) {\n let s = o.map((a) => y.encodeString(a));\n n = this.write(s, e, t10);\n } else\n n = this.write(o, e, t10);\n return this.texData.get(n).usage = null, { dataId: n, shape: e, dtype: t10 };\n }\n makeOutput(e, t10, o) {\n return sr().makeTensorFromTensorInfo(this.makeTensorInfo(e, t10, o), this);\n }\n unpackTensor(e) {\n let t10 = new Qf(e.shape);\n return this.runWebGLProgram(t10, [e], e.dtype);\n }\n packTensor(e) {\n let t10 = new Xf(e.shape), o = true;\n return this.runWebGLProgram(t10, [e], e.dtype, null, o);\n }\n packedReshape(e, t10) {\n let o = [Ua(e.shape), ...Ga(e.shape)], n = { dtype: e.dtype, shape: o, dataId: e.dataId }, s = [Ua(t10), ...Ga(t10)], a = new mc(s, o), i = true, p = [o], u = this.runWebGLProgram(a, [n], e.dtype, p, i);\n return { dataId: u.dataId, shape: t10, dtype: u.dtype };\n }\n decode(e, t10) {\n let o = this.texData.get(e), { isPacked: n, shape: s, dtype: a } = o;\n if (t10 != null) {\n let m = y.sizeFromShape(s), d = t10[0] * t10[1] * 4;\n y.assert(m <= d, () => \"customTexShape is too small. Row * Column * 4 should be equal or larger than the size of the tensor data.\");\n }\n let i = oc(s), p;\n n ? p = new Mf(i) : p = new Pf(i);\n let u = true, c = [t10 != null ? t10 : Il(i)], l = this.runWebGLProgram(p, [{ shape: i, dtype: a, dataId: e }], a, c, u, t10);\n return { dtype: a, shape: s, dataId: l.dataId };\n }\n runWebGLProgram(e, t10, o, n, s = false, a) {\n let i = this.makeTensorInfo(e.outputShape, o), p = this.texData.get(i.dataId);\n if (e.packedOutput && (p.isPacked = true), e.outPackingScheme === Li.DENSE) {\n let x = a != null ? a : Il(e.outputShape);\n p.texShape = x.map((b) => b * 2);\n }\n if (e.outTexUsage != null && (p.usage = e.outTexUsage), y.sizeFromShape(i.shape) === 0)\n return p.values = y.getTypedArrayFromDType(i.dtype, 0), i;\n let u = [], c = t10.map((x) => {\n if (x.dtype === \"complex64\")\n throw new Error(\"GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.\");\n let b = this.texData.get(x.dataId);\n if (b.texture == null) {\n if (!e.packedInputs && y.sizeFromShape(x.shape) <= O().getNumber(\"WEBGL_SIZE_UPLOAD_UNIFORM\"))\n return { shape: x.shape, texData: null, isUniform: true, uniformValues: b.values };\n e.packedInputs && (b.isPacked = true, b.shape = x.shape);\n }\n if (this.uploadToGPU(x.dataId), !!b.isPacked != !!e.packedInputs)\n x = b.isPacked ? this.unpackTensor(x) : this.packTensor(x), u.push(x), b = this.texData.get(x.dataId);\n else if (b.isPacked && !Bi(b.shape, x.shape)) {\n let C = x, w = x.shape;\n x.shape = b.shape, x = this.packedReshape(x, w), u.push(x), b = this.texData.get(x.dataId), C.shape = w;\n }\n return { shape: x.shape, texData: b, isUniform: false };\n });\n this.uploadToGPU(i.dataId);\n let l = { shape: i.shape, texData: p, isUniform: false }, m = B$(e, c, l), d = this.getAndSaveBinary(m, () => M$(this.gpgpu, e, c, l)), f = this.activeTimers != null, h;\n f && (h = this.startTimer()), O().get(\"ENGINE_COMPILE_ONLY\") || L$(this.gpgpu, d, c, l, n), u.forEach((x) => this.disposeIntermediateTensorInfo(x)), f && (h = this.endTimer(h), this.activeTimers.push({ name: e.constructor.name, query: this.getQueryTime(h) }));\n let g = O().get(\"WEBGL_FLUSH_THRESHOLD\");\n if (g > 0) {\n let x = y.now();\n x - this.lastGlFlushTime > g && (this.gpgpu.gl.flush(), this.lastGlFlushTime = x);\n }\n if (!O().getBool(\"WEBGL_LAZILY_UNPACK\") && p.isPacked && s === false) {\n let x = this.unpackTensor(i);\n return this.disposeIntermediateTensorInfo(i), x;\n }\n return i;\n }\n compileAndRun(e, t10, o, n, s = false) {\n return o = o || t10[0].dtype, this.runWebGLProgram(e, t10, o, n, s);\n }\n getAndSaveBinary(e, t10) {\n return e in this.binaryCache || (this.binaryCache[e] = t10()), this.binaryCache[e];\n }\n getTextureManager() {\n return this.textureManager;\n }\n dispose() {\n this.disposed || (O().getBool(\"IS_TEST\") || Object.keys(this.binaryCache).forEach((t10) => {\n this.gpgpu.deleteProgram(this.binaryCache[t10].webGLProgram), delete this.binaryCache[t10];\n }), 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 = true);\n }\n floatPrecision() {\n return this.floatPrecisionValue == null && (this.floatPrecisionValue = Ee(() => {\n if (!O().get(\"WEBGL_RENDER_FLOAT32_ENABLED\")) {\n let e = O().getBool(\"DEBUG\");\n O().set(\"DEBUG\", false);\n let t10 = this.abs(Ce(1e-8)).dataSync()[0];\n if (O().set(\"DEBUG\", e), t10 > 0)\n return 32;\n }\n return 16;\n })), this.floatPrecisionValue;\n }\n epsilon() {\n return this.floatPrecision() === 32 ? Q8 : Z8;\n }\n uploadToGPU(e) {\n let t10 = this.texData.get(e), { shape: o, dtype: n, values: s, texture: a, usage: i, isPacked: p } = t10;\n if (a != null)\n return;\n let u = this.activeTimers != null, c;\n u && (c = y.now());\n let l = t10.texShape;\n if (l == null && (l = sw(o, p), t10.texShape = l), s != null) {\n let m = oc(o), d, f = l[1], h = l[0], g = s instanceof Uint8Array || s instanceof Uint8ClampedArray;\n (p || !g) && ([f, h] = Qs(l[0], l[1])), p ? d = new Vf(m, g) : d = new Tl(m, g);\n let x = g ? [h, f] : l, b = this.makeTensorInfo(x, n), C = this.texData.get(b.dataId);\n g ? C.usage = ur.PIXELS : C.usage = ur.UPLOAD, C.texShape = x, this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(b.dataId), f, h, s);\n let w = [[h, f]], k = true, _ = this.runWebGLProgram(d, [b], n, w, k), E = this.texData.get(_.dataId);\n t10.texShape = E.texShape, t10.isPacked = E.isPacked, t10.usage = E.usage, O().get(\"ENGINE_COMPILE_ONLY\") ? this.disposeData(_.dataId) : (t10.texture = E.texture, t10.values = null, this.texData.delete(_.dataId)), this.disposeIntermediateTensorInfo(b), u && (this.uploadWaitMs += y.now() - c);\n } else {\n let m = this.acquireTexture(l, i, n, p);\n t10.texture = m;\n }\n }\n convertAndCacheOnCPU(e, t10) {\n let o = this.texData.get(e), { dtype: n } = o;\n return t10 != null && (o.values = oY(t10, n)), o.values;\n }\n acquireTexture(e, t10, o, n) {\n if (this.numBytesInGPU += this.computeBytes(e, o), !this.warnedAboutMemory && this.numBytesInGPU > this.numMBBeforeWarning * 1024 * 1024) {\n let s = (this.numBytesInGPU / 1024 / 1024).toFixed(2);\n this.warnedAboutMemory = true, console.warn(`High memory usage in GPU: ${s} MB, most likely due to a memory leak`);\n }\n return this.textureManager.acquireTexture(e, t10, n);\n }\n computeBytes(e, t10) {\n return e[0] * e[1] * y.bytesPerElement(t10);\n }\n checkCompileCompletion() {\n for (let [, e] of Object.entries(this.binaryCache))\n this.checkCompletion_(e);\n }\n async checkCompileCompletionAsync() {\n let e = [];\n if (this.gpgpu.parallelCompilationExtension) {\n for (let [, t10] of Object.entries(this.binaryCache))\n e.push(this.checkCompletionAsync_(t10));\n return Promise.all(e);\n } else {\n for (let [, t10] of Object.entries(this.binaryCache)) {\n let o = new Promise((n) => {\n try {\n this.checkCompletion_(t10), n(true);\n } catch (s) {\n throw s;\n }\n });\n e.push(o);\n }\n return Promise.all(e);\n }\n }\n async checkCompletionAsync_(e) {\n return this.gpgpu.gl.getProgramParameter(e.webGLProgram, this.gpgpu.parallelCompilationExtension.COMPLETION_STATUS_KHR) ? this.checkCompletion_(e) : (await AC(), this.checkCompletionAsync_(e));\n }\n checkCompletion_(e) {\n if (this.gpgpu.gl.getProgramParameter(e.webGLProgram, this.gpgpu.gl.LINK_STATUS) === false)\n throw console.log(this.gpgpu.gl.getProgramInfoLog(e.webGLProgram)), this.gpgpu.gl.getShaderParameter(e.fragmentShader, this.gpgpu.gl.COMPILE_STATUS) === false ? (Ef(e.source, this.gpgpu.gl.getShaderInfoLog(e.fragmentShader)), new Error(\"Failed to compile fragment shader.\")) : new Error(\"Failed to link vertex and fragment shaders.\");\n return true;\n }\n getUniformLocations() {\n for (let [, e] of Object.entries(this.binaryCache)) {\n let { uniformLocations: t10, customUniformLocations: o, infLoc: n, nanLoc: s, inShapesLocations: a, inTexShapesLocations: i, outShapeLocation: p, outShapeStridesLocation: u, outTexShapeLocation: c } = mw(this.gpgpu, e.program, e.webGLProgram);\n e.uniformLocations = t10, e.customUniformLocations = o, e.infLoc = n, e.nanLoc = s, e.inShapesLocations = a, e.inTexShapesLocations = i, e.outShapeLocation = p, e.outShapeStridesLocation = u, e.outTexShapeLocation = c;\n }\n }\n createTensorFromGPUData(e, t10, o) {\n e.channels = e.channels || \"RGBA\";\n let { texture: n, height: s, width: a, channels: i } = e, p = sr().backend;\n if (!p.gpgpu.gl.isTexture(n))\n throw new Error(\"The texture is invalid. Also, please make sure the texture and the TFJS WebGL backend are using the same canvas. If you want to use your own custom canvas, you have to create and use the custom TFJS WebGL backend created from the canvas through 'new tf.MathBackendWebGL(customCanvas)'.\");\n let u = p.writeTexture(n, t10, o, s, a, i);\n return sr().makeTensorFromDataId(u, t10, o, p);\n }\n};\nVi.nextDataId = 0;\nfunction oY(r, e) {\n if (e === \"float32\" || e === \"complex64\")\n return r;\n if (e === \"int32\" || e === \"bool\") {\n let t10 = e === \"int32\" ? new Int32Array(r.length) : new Uint8Array(r.length);\n for (let o = 0; o < t10.length; ++o)\n t10[o] = Math.round(r[o]);\n return t10;\n } else\n throw new Error(`Unknown dtype ${e}`);\n}\nvar nY = \"4.2.0\";\nfunction GE() {\n O().set(\"WEBGL_FORCE_F16_TEXTURES\", true);\n}\nki.isBrowser() && Ti(\"webgl\", () => new Vi(), 2);\nvar CJe = { forceHalfFloat: GE };\nvar dc = `\n if (isnan(a)) return a;\n if (isnan(b)) return b;\n`;\nvar io = class {\n constructor(e, t10, o) {\n this.variableNames = [\"A\", \"B\"], this.outputShape = S.assertAndGetBroadcastShape(t10, o), this.enableShapeUniforms = lt(this.outputShape.length), this.userCode = `\n float binaryOperation(float a, float b) {\n ${e}\n }\n\n void main() {\n float a = getAAtOutCoords();\n float b = getBAtOutCoords();\n setOutput(binaryOperation(a, b));\n }\n `;\n }\n};\nvar Js = `\n result.r = isNaN.r ? NAN : result.r;\n result.g = isNaN.g ? NAN : result.g;\n result.b = isNaN.b ? NAN : result.b;\n result.a = isNaN.a ? NAN : result.a;\n`;\nvar _o = class {\n constructor(e, t10, o, n = false) {\n this.variableNames = [\"A\", \"B\"], this.supportsBroadcasting = true, this.packedInputs = true, this.packedOutput = true, this.outputShape = S.assertAndGetBroadcastShape(t10, o);\n let s = this.outputShape.length;\n this.enableShapeUniforms = lt(s);\n let a = \"\";\n if (n)\n if (s === 0 || y.sizeFromShape(this.outputShape) === 1)\n a = `\n result.y = 0.;\n result.z = 0.;\n result.w = 0.;\n `;\n else if (a = `\n ${$e(s)} coords = getOutputCoords();\n `, s === 1)\n this.enableShapeUniforms ? a += `\n result.y = (coords + 1) >= outShape ? 0. : result.y;\n result.z = 0.;\n result.w = 0.;\n ` : a += `\n result.y = (coords + 1) >= ${this.outputShape[0]} ? 0. : result.y;\n result.z = 0.;\n result.w = 0.;\n `;\n else {\n let p = Et(\"coords\", s);\n this.enableShapeUniforms ? a += `\n bool nextRowOutOfBounds =\n (${p[s - 2]} + 1) >= outShape[${s} - 2];\n bool nextColOutOfBounds =\n (${p[s - 1]} + 1) >= outShape[${s} - 1];\n result.y = nextColOutOfBounds ? 0. : result.y;\n result.z = nextRowOutOfBounds ? 0. : result.z;\n result.w = nextColOutOfBounds || nextRowOutOfBounds ? 0. : result.w;\n ` : a += `\n bool nextRowOutOfBounds =\n (${p[s - 2]} + 1) >= ${this.outputShape[s - 2]};\n bool nextColOutOfBounds =\n (${p[s - 1]} + 1) >= ${this.outputShape[s - 1]};\n result.y = nextColOutOfBounds ? 0. : result.y;\n result.z = nextRowOutOfBounds ? 0. : result.z;\n result.w = nextColOutOfBounds || nextRowOutOfBounds ? 0. : result.w;\n `;\n }\n this.userCode = `\n vec4 binaryOperation(vec4 a, vec4 b) {\n ${e}\n }\n\n void main() {\n vec4 a = getAAtOutCoords();\n vec4 b = getBAtOutCoords();\n\n vec4 result = binaryOperation(a, b);\n ${a}\n\n setOutput(result);\n }\n `;\n }\n};\nfunction At(r) {\n let { inputs: e, backend: t10 } = r, { x: o } = e;\n return t10.incRef(o.dataId), { dataId: o.dataId, shape: o.shape, dtype: o.dtype };\n}\nvar HE = { kernelName: mo, backendName: \"webgl\", kernelFunc: At };\nfunction Ar(r) {\n let { inputs: e, backend: t10 } = r, { real: o, imag: n } = e, s = t10.makeTensorInfo(o.shape, \"complex64\"), a = t10.texData.get(s.dataId), i = At({ inputs: { x: o }, backend: t10 }), p = At({ inputs: { x: n }, backend: t10 });\n return a.complexTensorInfos = { real: i, imag: p }, s;\n}\nvar KE = { kernelName: ri, backendName: \"webgl\", kernelFunc: Ar };\nvar Rw = \"return (a < 0.) ? b * a : a;\";\nvar Dw = `\n vec4 aLessThanZero = vec4(lessThan(a, vec4(0.)));\n return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a);\n`;\nfunction sY(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { alpha: s } = o, a = t10.makeTensorInfo([], \"float32\", y.createScalarValue(s, \"float32\")), i = O().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\") ? new _o(Dw, n.shape, a.shape) : new io(Rw, n.shape, a.shape), p = t10.runWebGLProgram(i, [n, a], \"float32\");\n return t10.disposeIntermediateTensorInfo(a), p;\n}\nvar qE = { kernelName: ln, backendName: \"webgl\", kernelFunc: sY };\nvar Fw = \"return (a < 0.) ? b * a : a;\";\nvar Ow = `\n vec4 aLessThanZero = vec4(lessThan(a, vec4(0.)));\n return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a);\n`;\nfunction aY(r) {\n let { inputs: e, backend: t10 } = r, { x: o, alpha: n } = e, s = O().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\") ? new _o(Ow, o.shape, n.shape) : new io(Fw, o.shape, n.shape);\n return t10.runWebGLProgram(s, [o, n], \"float32\");\n}\nvar jE = { kernelName: Rn, backendName: \"webgl\", kernelFunc: aY };\nvar $o = \"if (isnan(x)) return x;\";\nfunction he({ opSnippet: r, packedOpSnippet: e, cpuKernelImpl: t10, dtype: o }) {\n return ({ inputs: n, backend: s }) => {\n let { x: a } = n, i = s, p = o || a.dtype;\n if (i.shouldExecuteOnCPU([a]) && t10 != null) {\n let l = i.texData.get(a.dataId), m = t10(l.values, p);\n return i.makeTensorInfo(a.shape, p, m);\n }\n let u = O().getBool(\"WEBGL_PACK_UNARY_OPERATIONS\") && e != null, c;\n return u ? c = new Er(a.shape, e) : c = new Jt(a.shape, r), i.runWebGLProgram(c, [a], p);\n };\n}\nfunction tt({ opSnippet: r, packedOpSnippet: e, checkOutOfBounds: t10 = false, supportsComplex: o = false, cpuKernelImpl: n, dtype: s }) {\n return ({ inputs: a, backend: i }) => {\n let { a: p, b: u } = a, c = i;\n if (o && p.dtype === \"complex64\") {\n let f = c.texData.get(p.dataId), h = c.texData.get(u.dataId), [g, x] = [[f.complexTensorInfos.real, h.complexTensorInfos.real], [f.complexTensorInfos.imag, h.complexTensorInfos.imag]].map((C) => {\n let [w, k] = C, _ = { dataId: w.dataId, dtype: w.dtype, shape: p.shape }, E = { dataId: k.dataId, dtype: k.dtype, shape: u.shape }, A = new io(r, p.shape, u.shape);\n return c.runWebGLProgram(A, [_, E], dt(w.dtype, k.dtype));\n }), b = Ar({ inputs: { real: g, imag: x }, backend: c });\n return c.disposeIntermediateTensorInfo(g), c.disposeIntermediateTensorInfo(x), b;\n }\n let l = s || dt(p.dtype, u.dtype);\n if ((p.dtype === \"string\" || u.dtype === \"string\" || c.shouldExecuteOnCPU([p, u])) && n != null) {\n let f = c.texData.get(p.dataId).values, h = c.texData.get(u.dataId).values, g = p.dtype === \"string\" ? S.fromUint8ToStringArray(f) : f, x = p.dtype === \"string\" ? S.fromUint8ToStringArray(h) : h, [b, C] = n(p.shape, u.shape, g, x, l), w = c.makeTensorInfo(C, l), k = c.texData.get(w.dataId);\n return k.values = b, w;\n }\n let m = O().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\") && e != null, d;\n return m ? d = new _o(e, p.shape, u.shape, t10) : d = new io(r, p.shape, u.shape), c.runWebGLProgram(d, [p, u], l);\n };\n}\nfunction Ha(r, e = false) {\n if (r === \"linear\")\n return e ? BE : DE;\n if (r === \"relu\")\n return e ? zE : OE;\n if (r === \"elu\")\n return e ? VE : FE;\n if (r === \"relu6\")\n return e ? WE : PE;\n if (r === \"prelu\")\n return e ? Ow : Fw;\n if (r === \"leakyrelu\")\n return e ? Dw : Rw;\n if (r === \"sigmoid\")\n return e ? UE : ME;\n throw new Error(`Activation ${r} has not been implemented for the WebGL backend.`);\n}\nvar fc = class {\n constructor(e, t10, o, n = false, s = false, a = false, i = null, p = false, u = false) {\n this.variableNames = [\"matrixA\", \"matrixB\"], this.packedInputs = true, this.packedOutput = true, this.outputShape = o, this.enableShapeUniforms = lt(this.outputShape.length);\n let c = n ? e[1] : e[2], l = Math.ceil(c / 2), m = n ? \"i * 2, rc.y\" : \"rc.y, i * 2\", d = s ? \"rc.z, i * 2\" : \"i * 2, rc.z\", f = n ? [\"a.xxyy\", \"a.zzww\"] : [\"a.xxzz\", \"a.yyww\"], h = s ? [\"b.xzxz\", \"b.ywyw\"] : [\"b.xyxy\", \"b.zwzw\"], g = \"\", x = \"\";\n i && (p ? g = `vec4 activation(vec4 a) {\n vec4 b = getPreluActivationWeightsAtOutCoords();\n ${i}\n }` : u ? g = `vec4 activation(vec4 a) {\n vec4 b = getLeakyreluAlphaAtOutCoords();\n ${i}\n }` : g = `vec4 activation(vec4 x) {\n ${i}\n }`, x = \"result = activation(result);\");\n let b = a ? \"result += getBiasAtOutCoords();\" : \"\";\n a && this.variableNames.push(\"bias\"), p && this.variableNames.push(\"preluActivationWeights\"), u && this.variableNames.push(\"leakyreluAlpha\");\n let C = \"rc.x\", w = \"rc.x\";\n e[0] < t10[0] ? C = `imod(rc.x, ${e[0]})` : t10[0] < e[0] && (w = `imod(rc.x, ${t10[0]})`), this.userCode = `\n ${g}\n // Don't use uniform for sharedDimensionPacked for performance.\n const float sharedDimension = ${l}.0;\n\n vec4 dot2x2ARowBCol(ivec3 rc) {\n vec4 result = vec4(0);\n int batchA = ${C};\n int batchB = ${w};\n for (int i = 0; i < ${l}; i++) {\n vec4 a = getMatrixA(batchA, ${m});\n vec4 b = getMatrixB(batchB, ${d});\n\n // These swizzled products need to be separately added.\n // See: https://github.com/tensorflow/tfjs/issues/1735\n result += (${f[0]} * ${h[0]});\n result += (${f[1]} * ${h[1]});\n }\n return result;\n }\n\n void main() {\n ivec3 rc = getOutputCoords();\n vec4 result = dot2x2ARowBCol(rc);\n\n ${b}\n\n ${x}\n\n setOutput(result);\n }\n `;\n }\n};\nvar Pw = { REAL: \"return areal * breal - aimag * bimag;\", IMAG: \"return areal * bimag + aimag * breal;\" };\nvar $l = class {\n constructor(e, t10, o) {\n this.variableNames = [\"AReal\", \"AImag\", \"BReal\", \"BImag\"], this.outputShape = S.assertAndGetBroadcastShape(t10, o), this.userCode = `\n float binaryOpComplex(\n float areal, float aimag, float breal, float bimag) {\n ${e}\n }\n\n void main() {\n float areal = getARealAtOutCoords();\n float aimag = getAImagAtOutCoords();\n float breal = getBRealAtOutCoords();\n float bimag = getBImagAtOutCoords();\n setOutput(binaryOpComplex(areal, aimag, breal, bimag));\n }\n `;\n }\n};\nvar XE = \"return a * b;\";\nfunction El(r) {\n let { inputs: e, backend: t10 } = r, { a: o, b: n } = e, s = S.upcastType(o.dtype, n.dtype);\n if (o.dtype === \"complex64\") {\n let i = t10.texData.get(o.dataId), p = t10.texData.get(n.dataId), u = new $l(Pw.REAL, o.shape, n.shape), c = new $l(Pw.IMAG, o.shape, n.shape), l = [{ dataId: i.complexTensorInfos.real.dataId, dtype: i.complexTensorInfos.real.dtype, shape: o.shape }, { dataId: i.complexTensorInfos.imag.dataId, dtype: i.complexTensorInfos.imag.dtype, shape: o.shape }, { dataId: p.complexTensorInfos.real.dataId, dtype: p.complexTensorInfos.real.dtype, shape: n.shape }, { dataId: p.complexTensorInfos.imag.dataId, dtype: p.complexTensorInfos.imag.dtype, shape: n.shape }], m = t10.runWebGLProgram(u, l, \"float32\"), d = t10.runWebGLProgram(c, l, \"float32\"), f = Ar({ inputs: { real: m, imag: d }, backend: t10 });\n return t10.disposeIntermediateTensorInfo(m), t10.disposeIntermediateTensorInfo(d), f;\n }\n if (t10.shouldExecuteOnCPU([o, n])) {\n let i = t10.texData.get(o.dataId), p = t10.texData.get(n.dataId), [u, c] = aE(o.shape, n.shape, i.values, p.values, s), l = t10.makeTensorInfo(c, s), m = t10.texData.get(l.dataId);\n return m.values = u, l;\n }\n let a;\n return O().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\") ? a = new _o(XE, o.shape, n.shape) : a = new io(XE, o.shape, n.shape), t10.runWebGLProgram(a, [o, n], s);\n}\nvar YE = { kernelName: kn, backendName: \"webgl\", kernelFunc: El };\nfunction QE(r, e, t10) {\n let o = [Ua(r.shape), ...Ga(r.shape)], n = { dtype: r.dtype, shape: o, dataId: r.dataId }, s = [Ua(e), ...Ga(e)], a = new mc(s, o), i = true, p = [o], u = t10.runWebGLProgram(a, [n], r.dtype, p, i);\n return { dataId: u.dataId, shape: e, dtype: u.dtype };\n}\nfunction re(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { shape: s } = o, a = t10, i = y.sizeFromShape(n.shape), p = y.inferFromImplicitShape(s, i), u = y.sizeFromShape(p);\n y.assert(i === u, () => `The new shape (${p}) has ${u} elements and the old shape (${n.shape}) has ${i} elements. The new shape and old shape must have the same number of elements.`);\n let c = a.texData.get(n.dataId);\n return c.isPacked && !Bi(n.shape, p) && !(c.texture !== null && Bi(c.shape, p)) ? QE(n, p, a) : (a.incRef(n.dataId), { dataId: n.dataId, shape: p, dtype: n.dtype });\n}\nvar ZE = { kernelName: _s, backendName: \"webgl\", kernelFunc: re };\nvar Al = class {\n constructor(e, t10) {\n this.variableNames = [\"x\"];\n let { windowSize: o, batchSize: n, inSize: s, outSize: a } = e;\n this.outputShape = [n, a];\n let i = Math.floor(o / 4) * 4, p = o % 4, u = \"sumValue += dot(values, ones);\";\n if (t10 != null) {\n let l = 1 / t10;\n u = `sumValue += dot(values * ${y.isInt(l) ? l.toPrecision(2) : l}, ones);`;\n }\n let c = \"\";\n s % o > 0 && (c = `\n if (inIdx < 0 || inIdx >= ${s}) {\n return 0.0;\n }\n `), this.userCode = `\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float getValue(int batch, int inIdx) {\n ${c}\n return getX(batch, inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * ${o};\n\n float sumValue = 0.0;\n\n for (int i = 0; i < ${i}; i += 4) {\n int inIdx = inOffset + i;\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n ${u}\n }\n\n int inIdx = inOffset + ${i};\n if (${p === 1}) {\n vec4 values = vec4(getValue(batch, inIdx), 0.0, 0.0, 0.0);\n\n ${u}\n } else if (${p === 2}) {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1), 0.0, 0.0);\n\n ${u}\n } else if (${p === 3}) {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2), 0.0);\n\n ${u}\n }\n setOutput(sumValue);\n }\n `;\n }\n};\nvar Jf = class {\n constructor(e, t10) {\n this.variableNames = [\"x\"];\n let { windowSize: o, batchSize: n, inSize: s, outSize: a } = e;\n this.outputShape = [n, a];\n let i = \"0.0\", p = \"\";\n t10 === \"prod\" ? i = \"1.0\" : t10 === \"min\" ? (i = \"1.0 / 1e-20\", p = \"min\") : t10 === \"max\" && (i = \"-1.0 / 1e-20\", p = \"max\");\n let u = `${t10}(${t10}(${t10}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;\n t10 === \"sum\" ? u = \"sumValue\" : t10 === \"prod\" ? u = \"prodValue\" : t10 === \"all\" ? u = \"allValue\" : t10 === \"any\" && (u = \"anyValue\");\n let c = Math.floor(o / 4) * 4, l = o % 4, m = `\n if (${t10 === \"sum\"}) {\n sumValue += dot(values, ones);\n } else if (${t10 === \"prod\"}) {\n vec2 tmp = vec2(values[0], values[1]) * vec2(values[2], values[3]);\n prodValue *= tmp[0] * tmp[1];\n } else {\n minMaxValue = ${p}(values, minMaxValue);\n if (${t10 === \"min\"} || ${t10 === \"max\"}) {\n minMaxValue = ${p}(values, minMaxValue);\n bvec4 isNaN = isnan(values);\n if (isNaN.r || isNaN.g || isNaN.b || isNaN.a) {\n minMaxValue = vec4(NAN);\n }\n }\n }\n `, d = \"vec4\";\n t10 === \"all\" ? (i = \"1.0\", m = `\n bool reducedAllValue = all(values);\n float floatedReducedAllValue = float(reducedAllValue);\n allValue = float(allValue >= 1.0 && floatedReducedAllValue >= 1.0);\n `, d = \"bvec4\") : t10 === \"any\" && (i = \"0.0\", m = `\n bool reducedAnyValue = any(values);\n float floatedReducedAnyValue = float(reducedAnyValue);\n anyValue = float(anyValue >= 1.0 || floatedReducedAnyValue >= 1.0);\n `, d = \"bvec4\");\n let f = \"\";\n s % o > 0 && (f = `\n if (inIdx < 0 || inIdx >= ${s}) {\n return initializationValue;\n }\n `), this.userCode = `\n const float initializationValue = ${i};\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float getValue(int batch, int inIdx) {\n ${f}\n return getX(batch, inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * ${o};\n\n vec4 minMaxValue = vec4(${i});\n float prodValue = 1.0;\n float sumValue = 0.0;\n float allValue = 1.0;\n float anyValue = 0.0;\n\n for (int i = 0; i < ${c}; i += 4) {\n int inIdx = inOffset + i;\n ${d} values = ${d}(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n ${m}\n }\n\n int inIdx = inOffset + ${c};\n if (${l === 1}) {\n ${d} values = ${d}(\n getValue(batch, inIdx),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n ${m}\n } else if (${l === 2}) {\n ${d} values = ${d}(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n initializationValue,\n initializationValue\n );\n\n ${m}\n } else if (${l === 3}) {\n ${d} values = ${d}(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n initializationValue\n );\n\n ${m}\n }\n setOutput(${u});\n }\n `;\n }\n};\nfunction uY(r) {\n let e = [];\n for (; e.length === 0 || e[e.length - 1].outSize !== 1; ) {\n let t10 = e.length ? e[e.length - 1].outSize : r[1], o = S.computeOptimalWindowSize(t10);\n e.push({ inSize: t10, windowSize: o, outSize: Math.ceil(t10 / o) });\n }\n return e;\n}\nfunction Ur(r, e, t10, o) {\n let n = uY(r.shape), s = r;\n for (let a = 0; a < n.length; a++) {\n let { inSize: i, windowSize: p, outSize: u } = n[a], c, l;\n t10 === \"mean\" ? c = a === 0 ? new Al({ windowSize: p, inSize: i, batchSize: r.shape[0], outSize: u }, i) : new Al({ windowSize: p, inSize: i, batchSize: r.shape[0], outSize: u }) : c = new Jf({ windowSize: p, inSize: i, batchSize: r.shape[0], outSize: u }, t10), l = s, s = o.runWebGLProgram(c, [s], e), l.dataId !== r.dataId && o.disposeIntermediateTensorInfo(l);\n }\n return s;\n}\nvar eh = class {\n constructor(e, t10) {\n this.variableNames = [\"A\"];\n let o = new Array(e.length);\n for (let a = 0; a < o.length; a++)\n o[a] = e[t10[a]];\n this.outputShape = o, this.rank = o.length;\n let n = $e(this.rank), s = pY(t10);\n this.userCode = `\n void main() {\n ${n} resRC = getOutputCoords();\n setOutput(getA(${s}));\n }\n `;\n }\n};\nfunction pY(r) {\n let e = r.length;\n if (e > 6)\n throw Error(`Transpose for rank ${e} is not yet supported`);\n let t10 = [\"resRC.x\", \"resRC.y\", \"resRC.z\", \"resRC.w\", \"resRC.u\", \"resRC.v\"], o = new Array(e);\n for (let n = 0; n < r.length; n++)\n o[r[n]] = t10[n];\n return o.join();\n}\nvar th = class {\n constructor(e, t10) {\n this.variableNames = [\"A\"], this.packedInputs = true, this.packedOutput = true;\n let o = new Array(e.length);\n for (let c = 0; c < o.length; c++)\n o[c] = e[t10[c]];\n if (this.outputShape = o, this.rank = o.length, this.rank > 6)\n throw Error(`Packed transpose for rank ${this.rank} is not yet supported.`);\n let n = $e(this.rank), s = Ew(\"rc\", this.rank), a = new Array(this.rank);\n for (let c = 0; c < t10.length; c++)\n a[t10[c]] = s[c];\n let i = `vec2(${a.slice(-2).join()})`, p = `++${s[this.rank - 1]} < ${o[this.rank - 1]}`, u = `getChannel(getA(${a.join()}), ${i})`;\n this.userCode = `\n void main() {\n ${n} rc = getOutputCoords();\n vec4 result = vec4(0.);\n result[0] = ${u};\n if(${p}) {\n result[1] = ${u};\n }\n --${s[this.rank - 1]};\n if(++${s[this.rank - 2]} < ${o[this.rank - 2]}) {\n result[2] = ${u};\n if(${p}) {\n result[3] = ${u};\n }\n }\n setOutput(result);\n }\n `;\n }\n};\nfunction zi(r, e, t10) {\n let o = O().getBool(\"WEBGL_PACK_ARRAY_OPERATIONS\") ? new th(r.shape, e) : new eh(r.shape, e);\n return t10.runWebGLProgram(o, [r], r.dtype);\n}\nfunction JE(r, e, t10, o) {\n let n = e, s = r.shape.length, a = y.parseAxisParam(n, r.shape), i = a, p = S.getAxesPermutation(i, s), u = p != null, c = r;\n u && (c = zi(r, p, o), i = S.getInnerMostAxes(i.length, s)), S.assertAxesAreInnerMostDims(\"sum\", i, s);\n let [l, m] = S.computeOutAndReduceShapes(c.shape, i), d = l;\n t10 && (d = S.expandShapeToKeepDim(l, a));\n let f = y.sizeFromShape(m), g = y.sizeFromShape(r.shape) / f, x = re({ inputs: { x: c }, attrs: { shape: [g, f] }, backend: o }), b = Ta(r.dtype), C = Ur(x, b, \"sum\", o), w = re({ inputs: { x: C }, attrs: { shape: d }, backend: o });\n return o.disposeIntermediateTensorInfo(x), o.disposeIntermediateTensorInfo(C), u && o.disposeIntermediateTensorInfo(c), w;\n}\nfunction Vu(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s, keepDims: a } = o;\n return JE(n, s, a, t10);\n}\nvar eA = { kernelName: Kn, backendName: \"webgl\", kernelFunc: Vu };\nfunction yt(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { perm: s } = o, a = t10, i = n.shape.length, p = new Array(i);\n for (let c = 0; c < p.length; c++)\n p[c] = n.shape[s[c]];\n let u;\n if (a.shouldExecuteOnCPU([n])) {\n let l = a.texData.get(n.dataId).values, m = Bu(l, n.shape, n.dtype, s, p);\n u = a.makeTensorInfo(p, n.dtype);\n let d = a.texData.get(u.dataId);\n d.values = m;\n } else\n u = zi(n, s, a);\n return u;\n}\nvar tA = { kernelName: ro, backendName: \"webgl\", kernelFunc: yt };\nvar Mw = 1e3;\nfunction zu({ a: r, b: e, transposeA: t10, transposeB: o, backend: n, bias: s = null, preluActivationWeights: a = null, leakyreluAlpha: i = 0, activation: p = null }) {\n let u = r.shape.length, c = e.shape.length, l = t10 ? r.shape[u - 2] : r.shape[u - 1], m = o ? e.shape[c - 1] : e.shape[c - 2], d = t10 ? r.shape[u - 1] : r.shape[u - 2], f = o ? e.shape[c - 2] : e.shape[c - 1], h = r.shape.slice(0, -2), g = e.shape.slice(0, -2), x = y.sizeFromShape(h), b = y.sizeFromShape(g), w = yr.assertAndGetBroadcastShape(r.shape.slice(0, -2), e.shape.slice(0, -2)).concat([d, f]);\n y.assert(l === m, () => `Error in matMul: inner shapes (${l}) and (${m}) of Tensors with shapes ${r.shape} and ${e.shape} and transposeA=${t10} and transposeB=${o} must match.`);\n let k = t10 ? [x, l, d] : [x, d, l], _ = o ? [b, f, m] : [b, m, f], E = re({ inputs: { x: r }, backend: n, attrs: { shape: k } }), A = re({ inputs: { x: e }, backend: n, attrs: { shape: _ } }), R = [E, A], D = Math.max(x, b), P = t10 ? E.shape[1] : E.shape[2], M = s != null, L = a != null, V = p === \"leakyrelu\", z = p != null ? Ha(p, true) : null, U = M || L || V || z != null, K;\n if ((d === 1 || f === 1) && P > Mw && U === false) {\n let q = E, Z = A;\n t10 && (q = yt({ inputs: { x: E }, backend: n, attrs: { perm: [0, 2, 1] } }), R.push(q)), o && (Z = yt({ inputs: { x: A }, backend: n, attrs: { perm: [0, 2, 1] } }), R.push(Z));\n let ee = f !== 1, oe = f === 1, J = q;\n ee && (J = re({ inputs: { x: q }, backend: n, attrs: { shape: [D, P, 1] } }), R.push(J));\n let te = f === 1 ? 2 : 1, ie = Z;\n oe && (ie = re({ inputs: { x: Z }, backend: n, attrs: { shape: [D, 1, P] } }), R.push(ie));\n let ce = El({ inputs: { a: J, b: ie }, backend: n });\n K = Vu({ inputs: { x: ce }, backend: n, attrs: { axis: te, keepDims: true } }), R.push(ce);\n } else {\n let q = dt(r.dtype, e.dtype), Z = new fc(k, _, [D, d, f], t10, o, M, z, L, V), ee = [E, A];\n if (s != null && ee.push(s), L && ee.push(a), V) {\n let oe = n.makeTensorInfo([], \"float32\", y.createScalarValue(i, \"float32\"));\n ee.push(oe), R.push(oe);\n }\n K = n.runWebGLProgram(Z, ee, q);\n }\n let H = re({ inputs: { x: K }, backend: n, attrs: { shape: w } });\n R.push(K);\n for (let q of R)\n n.disposeIntermediateTensorInfo(q);\n return H;\n}\nfunction cY(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { a: n, b: s, bias: a, preluActivationWeights: i } = e, { transposeA: p, transposeB: u, activation: c, leakyreluAlpha: l } = o;\n return zu({ a: n, b: s, transposeA: p, transposeB: u, backend: t10, bias: a, preluActivationWeights: i, leakyreluAlpha: l, activation: c });\n}\nvar rA = { kernelName: ho, backendName: \"webgl\", kernelFunc: cY };\nvar oA = \"return abs(x);\";\nfunction lY(r) {\n let { inputs: e, backend: t10 } = r, { x: o } = e;\n if (t10.shouldExecuteOnCPU([o]) && o.dtype !== \"complex64\") {\n let s = t10.texData.get(o.dataId), a = qf(s.values);\n return t10.makeTensorInfo(o.shape, o.dtype, a);\n }\n let n;\n return O().getBool(\"WEBGL_PACK_UNARY_OPERATIONS\") ? n = new Er(o.shape, oA) : n = new Jt(o.shape, oA), t10.runWebGLProgram(n, [o], o.dtype);\n}\nvar nA = { kernelName: ys, backendName: \"webgl\", kernelFunc: lY };\nvar mY = zt + `\n if (abs(x) > 1.) {\n return NAN;\n }\n return acos(x);\n`;\nvar dY = he({ opSnippet: mY });\nvar sA = { kernelName: aa, backendName: \"webgl\", kernelFunc: dY };\nvar fY = zt + `\n if (x < 1.0) return NAN;\nreturn log(x + sqrt(x * x - 1.0));`;\nvar hY = he({ opSnippet: fY });\nvar aA = { kernelName: ia, backendName: \"webgl\", kernelFunc: hY };\nvar iA = \"return a + b;\";\nvar gY = tt({ opSnippet: iA, packedOpSnippet: iA, supportsComplex: true, cpuKernelImpl: V$ });\nvar uA = { kernelName: eo, backendName: \"webgl\", kernelFunc: gY };\nvar rh = class {\n constructor(e, t10) {\n this.outputShape = [], this.outputShape = e, this.variableNames = t10.map((s, a) => `T${a}`);\n let o = [];\n this.variableNames.forEach((s) => {\n o.push(`float v${s} = get${s}AtOutCoords();`);\n });\n let n = this.variableNames.map((s) => `v${s}`).join(\" + \");\n this.userCode = `\n void main() {\n ${o.join(`\n `)}\n\n float result = ${n};\n setOutput(result);\n }\n `;\n }\n};\nvar oh = class {\n constructor(e, t10) {\n this.outputShape = [], this.packedInputs = true, this.packedOutput = true, this.outputShape = e, this.variableNames = t10.map((s, a) => `T${a}`);\n let o = [];\n this.variableNames.forEach((s) => {\n o.push(`vec4 v${s} = get${s}AtOutCoords();`);\n });\n let n = this.variableNames.map((s) => `v${s}`).join(\" + \");\n this.userCode = `\n void main() {\n ${o.join(`\n `)}\n\n vec4 result = ${n};\n setOutput(result);\n }\n `;\n }\n};\nfunction nh(r) {\n let { inputs: e, backend: t10 } = r, o = e;\n if (o.length === 1)\n return At({ inputs: { x: o[0] }, backend: t10 });\n if (o.length > O().get(\"WEBGL_MAX_TEXTURES_IN_SHADER\")) {\n let p = Math.floor(o.length / 2), u = nh({ inputs: o.slice(0, p), backend: t10 }), c = nh({ inputs: o.slice(p), backend: t10 });\n return nh({ inputs: [u, c], backend: t10 });\n }\n let n = o.map((p) => p.dtype).reduce((p, u) => dt(p, u)), s = o.map((p) => p.shape), i = O().getBool(\"WEBGL_PACK\") ? new oh(o[0].shape, s) : new rh(o[0].shape, s);\n return t10.runWebGLProgram(i, o, n);\n}\nvar pA = { kernelName: Po, backendName: \"webgl\", kernelFunc: nh };\nfunction xY(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s, keepDims: a } = o, i = n.shape.length, p = y.parseAxisParam(s, n.shape), u = p, c = S.getAxesPermutation(u, i), l = n;\n c != null && (l = yt({ inputs: { x: n }, backend: t10, attrs: { perm: c } }), u = S.getInnerMostAxes(u.length, i)), S.assertAxesAreInnerMostDims(\"all\", u, i);\n let [m, d] = S.computeOutAndReduceShapes(l.shape, u), f = y.sizeFromShape(d), h = re({ inputs: { x: l }, backend: t10, attrs: { shape: [-1, f] } }), g = Ur(h, h.dtype, \"all\", t10), x;\n if (a) {\n let b = S.expandShapeToKeepDim(m, p);\n x = re({ inputs: { x: g }, backend: t10, attrs: { shape: b } });\n } else\n x = re({ inputs: { x: g }, backend: t10, attrs: { shape: m } });\n return t10.disposeIntermediateTensorInfo(h), t10.disposeIntermediateTensorInfo(g), c != null && t10.disposeIntermediateTensorInfo(l), x;\n}\nvar cA = { kernelName: Mo, backendName: \"webgl\", kernelFunc: xY };\nfunction yY(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s, keepDims: a } = o, i = n.shape.length, p = y.parseAxisParam(s, n.shape), u = p, c = S.getAxesPermutation(u, i), l = n;\n c != null && (l = yt({ inputs: { x: n }, backend: t10, attrs: { perm: c } }), u = S.getInnerMostAxes(u.length, i)), S.assertAxesAreInnerMostDims(\"any\", u, i);\n let [m, d] = S.computeOutAndReduceShapes(l.shape, u), f = y.sizeFromShape(d), h = re({ inputs: { x: l }, backend: t10, attrs: { shape: [-1, f] } }), g = Ur(h, h.dtype, \"any\", t10), x;\n if (a) {\n let b = S.expandShapeToKeepDim(m, p);\n x = re({ inputs: { x: g }, backend: t10, attrs: { shape: b } });\n } else\n x = re({ inputs: { x: g }, backend: t10, attrs: { shape: m } });\n return t10.disposeIntermediateTensorInfo(h), t10.disposeIntermediateTensorInfo(g), c != null && t10.disposeIntermediateTensorInfo(l), x;\n}\nvar lA = { kernelName: Lo, backendName: \"webgl\", kernelFunc: yY };\nvar sh = class {\n constructor(e, t10, o) {\n this.variableNames = [\"A\"];\n let { windowSize: n, batchSize: s, outSize: a } = e;\n o || this.variableNames.push(\"bestIndicesA\"), this.outputShape = [s, a];\n let i = t10 === \"max\" ? \">\" : \"<\", p = o ? \"inOffset + i;\" : \"round(getBestIndicesA(batch, inOffset + i));\";\n this.userCode = `\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * ${n};\n\n int bestIndex = inOffset;\n float bestValue = getA(batch, bestIndex);\n\n for (int i = 0; i < ${n}; i++) {\n int inIdx = ${p};\n float candidate = getA(batch, inIdx);\n if (candidate ${i} bestValue) {\n bestValue = candidate;\n bestIndex = inIdx;\n }\n }\n setOutput(float(bestIndex));\n }\n `;\n }\n};\nvar ah = class {\n constructor(e, t10, o, n) {\n this.variableNames = [\"A\"], this.packedInputs = true, this.packedOutput = true, y.assert(e.length > 2, () => `Packed arg${o.charAt(0).toUpperCase() + o.slice(1)} supports only inputs with rank above 2.`);\n let s = e[e.length - 1], a = Math.ceil(s / t10);\n this.outputShape = e.slice(0, -1), a > 1 && this.outputShape.push(a), n || this.variableNames.push(\"bestIndicesA\");\n let i = this.outputShape, p = i.length, u = $e(p), c = Et(\"coords\", p), l, m;\n if (a === 1) {\n m = p + 1;\n let A = $e(m);\n l = `\n ${A} sourceLocR = ${A}(${c.join()}, 0);\n ++${c[p - 1]};\n ${A} sourceLocG = ${A}(${c.join()}, 0);\n ++${c[p - 2]};\n ${A} sourceLocA = ${A}(${c.join()}, 0);\n --${c[p - 1]};\n ${A} sourceLocB = ${A}(${c.join()}, 0);\n --${c[p - 2]};`;\n } else\n m = p, l = `\n ${u} sourceLocR = coords;\n ++${c[p - 1]};\n ${u} sourceLocG = coords;\n ++${c[p - 2]};\n ${u} sourceLocA = coords;\n --${c[p - 1]};\n ${u} sourceLocB = coords;\n --${c[p - 2]};`;\n let d = [\"x\", \"y\", \"z\", \"w\", \"u\", \"v\"].slice(0, m), f = \".\" + d[m - 1], h = d.map((A) => \"int \" + A), g = Et(\"sourceLocR\", m - 1).concat(\"inIdx.r\"), x = Et(\"sourceLocG\", m - 1).concat(\"inIdx.g\"), b = Et(\"sourceLocB\", m - 1).concat(\"inIdx.b\"), C = Et(\"sourceLocA\", m - 1).concat(\"inIdx.a\"), w = o === \"max\" ? \"greaterThan\" : \"lessThan\", k = n ? \"\" : `\n inIdx = round(vec4(getBestIndicesAChannel(${g.join()}),\n getBestIndicesAChannel(${x.join()}),\n getBestIndicesAChannel(${b.join()}),\n getBestIndicesAChannel(${C.join()})));`, _ = `vec4(\n getAChannel(${g.join()}),\n hasNextCol ? getAChannel(${x.join()}) : 0.,\n hasNextRow ? getAChannel(${b.join()}) : 0.,\n hasNextRow && hasNextCol ? getAChannel(${C.join()}) : 0.)`, E = n ? \"\" : `\n float getBestIndicesAChannel(${h.join()}) {\n return getChannel(getBestIndicesA(${d.join()}),\n vec2(${d.slice(-2).join()}));\n }`;\n this.userCode = `\n float getAChannel(${h.join()}) {\n return getChannel(getA(${d.join()}),\n vec2(${d.slice(-2).join()}));\n }\n ${E}\n void main() {\n ${u} coords = getOutputCoords();\n bool hasNextCol = ${c[p - 1]} < ${i[p - 1] - 1};\n bool hasNextRow = ${c[p - 2]} < ${i[p - 2] - 1};\n ${l}\n ivec4 srcIdx = ivec4(sourceLocR${f}, sourceLocG${f},\n sourceLocB${f}, sourceLocA${f}) * ${t10};\n ivec4 inIdx = srcIdx;\n vec4 bestIndex = vec4(inIdx);\n vec4 bestValue = ${_};\n\n for (int i = 0; i < ${t10}; i++) {\n inIdx = srcIdx;\n ${k}\n vec4 candidate = ${_};\n bvec4 nan = isnan(candidate);\n bvec4 replace = bvec4(\n vec4(${w}(candidate, bestValue)) * (vec4(1.0) - vec4(nan)));\n\n bestValue = vec4(replace.x ? candidate.x : bestValue.x,\n replace.y ? candidate.y : bestValue.y,\n replace.z ? candidate.z : bestValue.z,\n replace.w ? candidate.w : bestValue.w);\n bestIndex = mix(bestIndex, vec4(inIdx), vec4(replace));\n srcIdx++;\n }\n setOutput(bestIndex);\n }\n `;\n }\n};\nfunction mA(r, e, t10, o = null) {\n let n = e.shape[0], s = e.shape[1];\n o != null && (n = o.shape[0], s = o.shape[1]);\n let a = S.computeOptimalWindowSize(s), i = { windowSize: a, inSize: s, batchSize: n, outSize: Math.ceil(s / a) }, p = new sh(i, t10, o == null), u = [e];\n o != null && u.push(o);\n let c = r.runWebGLProgram(p, u, \"int32\");\n if (c.shape[1] === 1)\n return c;\n let l = mA(r, e, t10, c);\n return r.disposeIntermediateTensorInfo(c), l;\n}\nfunction dA(r, e, t10, o = null) {\n let n = o != null ? o.shape : e.shape, s = n[n.length - 1], a = S.computeOptimalWindowSize(s), i = new ah(n, a, t10, o == null), p = o == null ? [e] : [e, o], u = r.runWebGLProgram(i, p, \"int32\");\n if (u.shape.length === e.shape.length) {\n let c = dA(r, e, t10, u);\n return r.disposeIntermediateTensorInfo(u), c;\n }\n return u;\n}\nfunction ih(r, e, t10, o) {\n let n = [t10];\n if (S.assertAxesAreInnerMostDims(\"arg\" + o.charAt(0).toUpperCase() + o.slice(1), n, e.shape.length), !O().getBool(\"WEBGL_PACK_REDUCE\") || e.shape.length <= 2) {\n let s = [], a = r.texData.get(e.dataId), i = a !== null && a.isPacked, p = e;\n i && (p = r.unpackTensor(e), s.push(p));\n let [u, c] = S.computeOutAndReduceShapes(p.shape, n), l = y.sizeFromShape(c), m = re({ inputs: { x: p }, backend: r, attrs: { shape: [-1, l] } });\n s.push(m);\n let d = mA(r, m, o);\n s.push(d);\n let f = re({ inputs: { x: d }, backend: r, attrs: { shape: u } });\n return s.forEach((h) => r.disposeIntermediateTensorInfo(h)), f;\n }\n return dA(r, e, o);\n}\nfunction bY(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s } = o, a = y.parseAxisParam(s, n.shape), i = S.getAxesPermutation(a, n.shape.length), p = n, u = [];\n i != null && (p = yt({ inputs: { x: n }, backend: t10, attrs: { perm: i } }), u.push(p), a = S.getInnerMostAxes(a.length, p.shape.length)), S.assertAxesAreInnerMostDims(\"argMax\", [a[0]], p.shape.length);\n let c = ih(t10, p, a[0], \"max\");\n return u.forEach((l) => t10.disposeIntermediateTensorInfo(l)), c;\n}\nvar fA = { kernelName: Bo, backendName: \"webgl\", kernelFunc: bY };\nfunction CY(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s } = o, a = y.parseAxisParam(s, n.shape), i = S.getAxesPermutation(a, n.shape.length), p = n, u = [];\n i != null && (p = yt({ inputs: { x: n }, backend: t10, attrs: { perm: i } }), u.push(p), a = S.getInnerMostAxes(a.length, p.shape.length)), S.assertAxesAreInnerMostDims(\"argMin\", [a[0]], p.shape.length);\n let c = ih(t10, p, a[0], \"min\");\n return u.forEach((l) => t10.disposeIntermediateTensorInfo(l)), c;\n}\nvar hA = { kernelName: ei, backendName: \"webgl\", kernelFunc: CY };\nvar SY = zt + `\n if (abs(x) > 1.) {\n return NAN;\n }\n return asin(x);\n`;\nvar wY = he({ opSnippet: SY });\nvar gA = { kernelName: ua, backendName: \"webgl\", kernelFunc: wY };\nvar IY = zt + \"return log(x + sqrt(x * x + 1.0));\";\nvar vY = he({ opSnippet: IY });\nvar xA = { kernelName: pa, backendName: \"webgl\", kernelFunc: vY };\nvar kY = zt + `\n return atan(x);\n`;\nvar NY = he({ opSnippet: kY });\nvar yA = { kernelName: ca, backendName: \"webgl\", kernelFunc: NY };\nvar TY = dc + `\n return atan(a, b);\n`;\nvar _Y = `\n vec4 result = atan(a, b);\n bvec4 isNaNA = isnan(a);\n bvec4 isNaNB = isnan(b);\n bvec4 isNaN = bvec4(isNaNA.x || isNaNB.x, isNaNA.y || isNaNB.y, isNaNA.z || isNaNB.z, isNaNA.w || isNaNB.w);\n ` + Js + `\n return result;\n`;\nvar $Y = tt({ opSnippet: TY, packedOpSnippet: _Y });\nvar bA = { kernelName: ma, backendName: \"webgl\", kernelFunc: $Y };\nvar EY = zt + `\n if ((x < -1.0) || (x > 1.0)) return NAN;\nreturn (log(1.0 + x) - log(1.0 - x)) / 2.0;`;\nvar AY = he({ opSnippet: EY });\nvar CA = { kernelName: la, backendName: \"webgl\", kernelFunc: AY };\nvar cs = class {\n constructor(e, t10, o, n = false, s = false) {\n if (this.variableNames = [\"x\"], t10 === \"avg\" && o)\n throw new Error(\"Cannot compute positions for average pool.\");\n let a = e.filterWidth, i = e.strideHeight, p = e.strideWidth, u = e.dilationHeight, c = e.dilationWidth, l = e.effectiveFilterHeight, m = e.effectiveFilterWidth, d = e.padInfo.top, f = e.padInfo.left;\n this.outputShape = e.outShape;\n let h = t10 === \"avg\", g = `((batch * ${e.inHeight} + xR) * ${e.inWidth} + xC) * ${e.inChannels} + d`, x = `(xR * ${e.inWidth} + xC) * ${e.inChannels} + d`, b = \"0.0\";\n if (h || (b = \"-1.0 / 1e-20\"), o) {\n let A = \">=\";\n this.userCode = `\n const ivec2 strides = ivec2(${i}, ${p});\n const ivec2 pads = ivec2(${d}, ${f});\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // max/min x(?, ?, d) to get y(yR, yC, d).\n // ? = to be determined\n float minMaxValue = 0.0;\n float minMaxValueFound = 0.0;\n int minMaxPosition = 0;\n float avgValue = 0.0;\n\n for (int wR = 0; wR < ${l};\n wR += ${u}) {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= ${e.inHeight}) {\n continue;\n }\n\n for (int wC = 0; wC < ${m};\n wC += ${c}) {\n int xC = xCCorner + wC;\n\n if (xC < 0 || xC >= ${e.inWidth}) {\n continue;\n }\n\n float value = getX(batch, xR, xC, d);\n\n // If a min / max value has already been found, use it. If not,\n // use the current value.\n float currMinMaxValue = mix(\n value, minMaxValue, minMaxValueFound);\n if (value ${A} currMinMaxValue) {\n minMaxValue = value;\n minMaxValueFound = 1.0;\n minMaxPosition = ${n ? s ? g : x : `wR * ${m} + wC`};\n }\n }\n }\n setOutput(float(minMaxPosition));\n }\n `;\n return;\n }\n let C = \"max\", w = `${t10}(${t10}(${t10}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;\n t10 === \"avg\" && (w = \"avgValue / max(count, 1.0)\");\n let k = Math.floor(a / 4) * 4, _ = a % 4, E = `\n if (${h}) {\n avgValue += dot(values, ones);\n } else {\n minMaxValue = ${C}(values, minMaxValue);\n }\n `;\n this.userCode = `\n const ivec2 strides = ivec2(${i}, ${p});\n const ivec2 pads = ivec2(${d}, ${f});\n const float initializationValue = ${b};\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float count = 0.0;\n\n float getValue(int batch, int xR, int xC, int d) {\n if (xC < 0 || xC >= ${e.inWidth}) {\n return initializationValue;\n }\n count += 1.0;\n return getX(batch, xR, xC, d);\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // max/min x(?, ?, d) to get y(yR, yC, d).\n // ? = to be determined\n vec4 minMaxValue = vec4(${b});\n float avgValue = 0.0;\n count = 0.0;\n\n for (int wR = 0; wR < ${l};\n wR += ${u}) {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= ${e.inHeight}) {\n continue;\n }\n\n for (int wC = 0; wC < ${k}; wC += 4) {\n int xC = xCCorner + wC * ${c};\n\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + ${c}, d),\n getValue(batch, xR, xC + 2 * ${c}, d),\n getValue(batch, xR, xC + 3 * ${c}, d)\n );\n\n ${E}\n }\n\n int xC = xCCorner + ${k};\n if (${_ === 1}) {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n ${E}\n } else if (${_ === 2}) {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + ${c}, d),\n initializationValue,\n initializationValue\n );\n\n ${E}\n } else if (${_ === 3}) {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + ${c}, d),\n getValue(batch, xR, xC + 2 * ${c}, d),\n initializationValue\n );\n\n ${E}\n }\n }\n setOutput(${w});\n }\n `;\n }\n};\nvar Wi = class {\n constructor(e, t10, o, n = false, s = false) {\n if (this.variableNames = [\"x\"], t10 === \"avg\" && o)\n throw new Error(\"Cannot compute positions for average pool.\");\n let a = e.filterWidth, i = e.strideDepth, p = e.strideHeight, u = e.strideWidth, c = e.dilationDepth, l = e.dilationHeight, m = e.dilationWidth, d = e.effectiveFilterDepth, f = e.effectiveFilterHeight, h = e.effectiveFilterWidth, g = e.padInfo.front, x = e.padInfo.top, b = e.padInfo.left;\n this.outputShape = e.outShape;\n let C = t10 === \"avg\", w = \"0.0\";\n if (C || (w = \"-1.0 / 1e-20\"), o) {\n let D = \">=\";\n this.userCode = `\n const ivec3 strides =\n ivec3(${i}, ${p}, ${u});\n const ivec3 pads = ivec3(${g}, ${x}, ${b});\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n int xDCorner = xCorner.x;\n int xRCorner = xCorner.y;\n int xCCorner = xCorner.z;\n\n // max/min x(?, ?, ?, ch) to get y(yD, yR, yC, ch).\n // ? = to be determined\n float minMaxValue = 0.0;\n float minMaxValueFound = 0.0;\n int minMaxPosition = 0;\n\n for (int wD = 0; wD < ${d};\n wD += ${c}) {\n int xD = xDCorner + wD;\n\n if (xD < 0 || xD >= ${e.inDepth}) {\n continue;\n }\n\n for (int wR = 0; wR < ${f};\n wR += ${l}) {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= ${e.inHeight}) {\n continue;\n }\n\n for (int wC = 0; wC < ${h};\n wC += ${m}) {\n int xC = xCCorner + wC;\n\n if (xC < 0 || xC >= ${e.inWidth}) {\n continue;\n }\n\n float value = getX(batch, xD, xR, xC, ch);\n\n // If a min / max value has already been found, use it. If not,\n // use the current value.\n float currMinMaxValue = mix(\n value, minMaxValue, minMaxValueFound);\n if (value ${D} currMinMaxValue) {\n minMaxValue = value;\n minMaxValueFound = 1.0;\n minMaxPosition = ${n ? s ? `(((batch * ${e.inDepth} + xD) * ${e.inHeight} + xR) * ${e.inWidth} + xC) * ${e.inChannels} + ch` : `((xD * ${e.inHeight} + xR) * ${e.inWidth} + xC) * ${e.inChannels} + ch` : `wD * ${f} * ${h} +\n wR * ${h} + wC`};\n }\n }\n }\n }\n setOutput(float(minMaxPosition));\n }\n `;\n return;\n }\n let k = \"max\", _ = `${t10}(${t10}(${t10}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;\n t10 === \"avg\" && (_ = \"avgValue / max(count, 1.0)\");\n let E = Math.floor(a / 4) * 4, A = a % 4, R = `\n if (${C}) {\n avgValue += dot(values, ones);\n } else {\n minMaxValue = ${k}(values, minMaxValue);\n }\n `;\n this.userCode = `\n const ivec3 strides =\n ivec3(${i}, ${p}, ${u});\n const ivec3 pads = ivec3(${g}, ${x}, ${b});\n const float initializationValue = ${w};\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float count = 0.0;\n\n float getValue(int batch, int xD, int xR, int xC, int ch) {\n if (xC < 0 || xC >= ${e.inWidth}) {\n return initializationValue;\n }\n count += 1.0;\n return getX(batch, xD, xR, xC, ch);\n }\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n int xDCorner = xCorner.x;\n int xRCorner = xCorner.y;\n int xCCorner = xCorner.z;\n\n // max/min x(?, ?, ?, d) to get y(yD, yR, yC, ch).\n // ? = to be determined\n vec4 minMaxValue = vec4(${w});\n float avgValue = 0.0;\n count = 0.0;\n\n for (int wD = 0; wD < ${d};\n wD += ${c}) {\n int xD = xDCorner + wD;\n\n if (xD < 0 || xD >= ${e.inDepth}) {\n continue;\n }\n\n for (int wR = 0; wR < ${f};\n wR += ${l}) {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= ${e.inHeight}) {\n continue;\n }\n\n for (int wC = 0; wC < ${E}; wC += 4) {\n int xC = xCCorner + wC * ${m};\n\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n getValue(batch, xD, xR, xC + ${m}, ch),\n getValue(batch, xD, xR, xC + 2 * ${m}, ch),\n getValue(batch, xD, xR, xC + 3 * ${m}, ch)\n );\n\n ${R}\n }\n\n int xC = xCCorner + ${E};\n if (${A === 1}) {\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n ${R}\n } else if (${A === 2}) {\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n getValue(batch, xD, xR, xC + ${m}, ch),\n initializationValue,\n initializationValue\n );\n\n ${R}\n } else if (${A === 3}) {\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n getValue(batch, xD, xR, xC + ${m}, ch),\n getValue(batch, xD, xR, xC + 2 * ${m}, ch),\n initializationValue\n );\n\n ${R}\n }\n }\n }\n setOutput(${_});\n }\n `;\n }\n};\nfunction RY(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e;\n us(n, \"avgPool\");\n let { filterSize: s, strides: a, pad: i, dimRoundingMode: p } = o, u = 1;\n y.assert(S.eitherStridesOrDilationsAreOne(a, u), () => `Error in avgPool: Either strides or dilations must be 1. Got strides ${a} and dilations '${u}'`);\n let c = S.computePool2DInfo(n.shape, s, a, u, i, p);\n if (c.filterWidth === 1 && c.filterHeight === 1 && y.arraysEqual(c.inShape, c.outShape))\n return At({ inputs: { x: n }, backend: t10 });\n let l = new cs(c, \"avg\", false);\n return t10.runWebGLProgram(l, [n], \"float32\");\n}\nvar SA = { kernelName: Vo, backendName: \"webgl\", kernelFunc: RY };\nfunction DY(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { filterSize: s, strides: a, pad: i, dimRoundingMode: p, dataFormat: u } = o, c = [1, 1, 1], l = S.computePool3DInfo(n.shape, s, a, c, i, p, u), m = new Wi(l, \"avg\", false);\n return t10.runWebGLProgram(m, [n], \"float32\");\n}\nvar wA = { kernelName: dp, backendName: \"webgl\", kernelFunc: DY };\nvar uh = class {\n constructor(e) {\n this.variableNames = [\"dy\"], this.outputShape = e.inShape;\n let t10 = e.filterHeight, o = e.filterWidth, n = e.strideHeight, s = e.strideWidth, a = e.dilationHeight, i = e.dilationWidth, p = e.effectiveFilterHeight, u = e.effectiveFilterWidth, c = p - 1 - e.padInfo.top, l = u - 1 - e.padInfo.left, m = 1 / (t10 * o);\n this.userCode = `\n const ivec2 pads = ivec2(${c}, ${l});\n const float avgMultiplier = float(${m});\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n\n ivec2 dyRCCorner = coords.yz - pads;\n int dyRCorner = dyRCCorner.x;\n int dyCCorner = dyRCCorner.y;\n\n // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < ${p};\n wR += ${a}) {\n float dyR = float(dyRCorner + wR) / ${n}.0;\n\n if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < ${u};\n wC+= ${i}) {\n float dyC = float(dyCCorner + wC) / ${s}.0;\n\n if (dyC < 0.0 || dyC >= ${e.outWidth}.0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(b, idyR, idyC, d);\n\n dotProd += dyValue * avgMultiplier;\n }\n }\n setOutput(dotProd);\n }\n `;\n }\n};\nvar ph = class {\n constructor(e) {\n this.variableNames = [\"dy\"], this.outputShape = e.inShape;\n let t10 = e.filterDepth, o = e.filterHeight, n = e.filterWidth, s = e.strideDepth, a = e.strideHeight, i = e.strideWidth, p = e.dilationDepth, u = e.dilationHeight, c = e.dilationWidth, l = e.effectiveFilterDepth, m = e.effectiveFilterHeight, d = e.effectiveFilterWidth, f = l - 1 - e.padInfo.front, h = m - 1 - e.padInfo.top, g = d - 1 - e.padInfo.left, x = 1 / (t10 * o * n);\n this.userCode = `\n const ivec3 pads = ivec3(${f}, ${h}, ${g});\n const float avgMultiplier = float(${x});\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n int dyDCorner = dyCorner.x;\n int dyRCorner = dyCorner.y;\n int dyCCorner = dyCorner.z;\n\n // Convolve dy(?, ?, ?, d) with pos mask(:, :, :, ch) to get\n // dx(xD, xR, xC, ch).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int wD = 0; wD < ${l};\n wD += ${p}) {\n float dyD = float(dyDCorner + wD) / ${s}.0;\n\n if (dyD < 0.0 || dyD >= ${e.outDepth}.0 || fract(dyD) > 0.0) {\n continue;\n }\n int idyD = int(dyD);\n\n for (int wR = 0; wR < ${m};\n wR += ${u}) {\n float dyR = float(dyRCorner + wR) / ${a}.0;\n\n if (dyR < 0.0 || dyR >= ${e.outHeight}.0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < ${d};\n wC += ${c}) {\n float dyC = float(dyCCorner + wC) / ${i}.0;\n\n if (dyC < 0.0 || dyC >= ${e.outWidth}.0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(batch, idyD, idyR, idyC, ch);\n\n dotProd += dyValue * avgMultiplier;\n }\n }\n }\n setOutput(dotProd);\n }\n `;\n }\n};\nfunction FY(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { dy: n, input: s } = e, a = s, { filterSize: i, strides: p, pad: u, dimRoundingMode: c } = o, l = [1, 1, 1], m = S.computePool3DInfo(a.shape, i, p, l, u, c), d = new ph(m);\n return t10.runWebGLProgram(d, [n], a.dtype);\n}\nvar IA = { kernelName: vm, backendName: \"webgl\", kernelFunc: FY };\nfunction OY(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { dy: n, input: s } = e, a = s;\n us([n, s], \"avgPoolGrad\");\n let { filterSize: i, strides: p, pad: u } = o, c = S.computePool2DInfo(a.shape, i, p, 1, u), l = new uh(c);\n return t10.runWebGLProgram(l, [n], a.dtype);\n}\nvar vA = { kernelName: mp, backendName: \"webgl\", kernelFunc: OY };\nfunction PY(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { a: n, b: s } = e, { transposeA: a, transposeB: i } = o;\n return zu({ a: n, b: s, transposeA: a, transposeB: i, backend: t10 });\n}\nvar kA = { kernelName: zo, backendName: \"webgl\", kernelFunc: PY };\nvar ch = class {\n constructor(e, t10, o, n, s, a) {\n this.outputShape = [], this.variableNames = [\"x\", \"mean\", \"variance\"], S.assertAndGetBroadcastShape(e, t10), S.assertAndGetBroadcastShape(e, o);\n let i = \"0.0\";\n n != null && (S.assertAndGetBroadcastShape(e, n), this.variableNames.push(\"offset\"), i = \"getOffsetAtOutCoords()\");\n let p = \"1.0\";\n s != null && (S.assertAndGetBroadcastShape(e, s), this.variableNames.push(\"scale\"), p = \"getScaleAtOutCoords()\"), this.outputShape = e, this.userCode = `\n void main() {\n float x = getXAtOutCoords();\n float mean = getMeanAtOutCoords();\n float variance = getVarianceAtOutCoords();\n float offset = ${i};\n float scale = ${p};\n float inv = scale * inversesqrt(variance + float(${a}));\n setOutput(dot(vec3(x, -mean, offset), vec3(inv, inv, 1)));\n }\n `;\n }\n};\nvar lh = class {\n constructor(e, t10, o, n, s, a) {\n this.packedInputs = true, this.packedOutput = true, this.variableNames = [\"x\", \"mean\", \"variance\"], S.assertAndGetBroadcastShape(e, t10), S.assertAndGetBroadcastShape(e, o);\n let i = \"vec4(0.0)\";\n n != null && (S.assertAndGetBroadcastShape(e, n), this.variableNames.push(\"offset\"), i = \"getOffsetAtOutCoords()\");\n let p = \"vec4(1.0)\";\n s != null && (S.assertAndGetBroadcastShape(e, s), this.variableNames.push(\"scale\"), p = \"getScaleAtOutCoords()\"), this.outputShape = e, this.userCode = `\n void main() {\n vec4 offset = ${i};\n vec4 scale = ${p};\n\n vec4 x = getXAtOutCoords();\n vec4 mean = getMeanAtOutCoords();\n vec4 variance = getVarianceAtOutCoords();\n\n vec4 inv = scale * inversesqrt(variance + vec4(${a}));\n\n setOutput((x - mean) * inv + offset);\n }\n `;\n }\n};\nvar MY = ({ inputs: r, backend: e, attrs: t10 }) => {\n let { x: o, mean: n, variance: s, offset: a, scale: i } = r;\n y.assert(n.shape.length === s.shape.length, () => \"Batch normalization gradient requires mean and variance to have equal ranks.\"), y.assert(a == null || n.shape.length === a.shape.length, () => \"Batch normalization gradient requires mean and offset to have equal ranks.\"), y.assert(i == null || n.shape.length === i.shape.length, () => \"Batch normalization gradient requires mean and scale to have equal ranks.\");\n let { varianceEpsilon: p } = t10;\n p == null && (p = 1e-3);\n let u = [o, n, s], c = null;\n a != null && (c = a.shape, u.push(a));\n let l = null;\n i != null && (l = i.shape, u.push(i));\n let m = O().getBool(\"WEBGL_PACK_NORMALIZATION\") ? new lh(o.shape, n.shape, s.shape, c, l, p) : new ch(o.shape, n.shape, s.shape, c, l, p);\n return e.runWebGLProgram(m, u, u[0].dtype);\n};\nvar NA = { kernelName: sn, backendName: \"webgl\", kernelFunc: MY };\nvar mh = class {\n constructor(e) {\n this.variableNames = [\"source\"], this.outputShape = e, this.rank = e.length;\n let t10 = $e(this.rank);\n this.customUniforms = [{ name: \"start\", arrayIndex: this.rank, type: \"int\" }];\n let o = LY(this.rank), n, s = e.map((a, i) => `sourceLoc.${Lw[i]} = start[${i}] + coords.${Lw[i]};`);\n n = `\n ${t10} sourceLoc;\n ${t10} coords = getOutputCoords();\n ${s.join(`\n`)}\n `, this.userCode = `\n void main() {\n ${n}\n setOutput(getSource(${o}));\n }\n `;\n }\n};\nvar Lw = [\"x\", \"y\", \"z\", \"w\", \"u\", \"v\"];\nfunction LY(r) {\n if (r === 1)\n return \"sourceLoc\";\n if (r <= 6)\n return Lw.slice(0, r).map((e) => \"sourceLoc.\" + e).join(\",\");\n throw Error(`Slicing for rank ${r} is not yet supported`);\n}\nvar dh = class {\n constructor(e) {\n this.variableNames = [\"source\"], this.packedInputs = true, this.packedOutput = true, this.outputShape = e, this.rank = e.length, this.customUniforms = [{ name: \"start\", arrayIndex: this.rank, type: \"int\" }];\n let t10 = $e(this.rank), o = Et(\"coords\", this.rank), n = Et(\"sourceLoc\", this.rank), s = this.rank === 1 ? \"sourceLoc\" : `vec2(${n.slice(-2).join()})`, a = `getChannel(getSource(${n.join()}), ${s})`, i = `\n result.x = ${a};\n if (++${o[this.rank - 1]} < ${e[this.rank - 1]}) {\n ++${n[this.rank - 1]};\n result.y = ${a};\n --${n[this.rank - 1]};\n }\n `, p = this.rank === 1 ? \"\" : `\n --${o[this.rank - 1]};\n if (++${o[this.rank - 2]} < ${e[this.rank - 2]}) {\n ++${n[this.rank - 2]};\n result.z = ${a};\n if (++${o[this.rank - 1]} < ${e[this.rank - 1]}) {\n ++${n[this.rank - 1]};\n result.w = ${a};\n }\n }\n `, u = this.rank <= 4 ? `sourceLoc = coords +\n ${t10}(${e.map((c, l) => `start[${l}]`).join()});` : e.map((c, l) => `${n[l]} = ${o[l]} + start[${l}];`).join(`\n`);\n this.userCode = `\n void main() {\n ${t10} coords = getOutputCoords();\n ${t10} sourceLoc;\n ${u}\n vec4 result = vec4(0.);\n ${i}\n ${p}\n setOutput(result);\n }\n `;\n }\n};\nfunction BY(r, e, t10, o) {\n let n = o.texData.get(r.dataId), s = o.makeTensorInfo(t10, r.dtype), a = o.texData.get(s.dataId);\n Object.assign(a, n), a.refCount = 1, a.shape = t10, a.dtype = r.dtype;\n let i = ut.computeFlatOffset(e, y.computeStrides(r.shape));\n n.slice && (i += n.slice.flatOffset), a.slice = { flatOffset: i, origDataId: n.slice && n.slice.origDataId || r.dataId };\n let p = o.dataRefCount.get(a.slice.origDataId) || 1;\n return o.dataRefCount.set(a.slice.origDataId, p + 1), s;\n}\nfunction ls(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { begin: s, size: a } = o, [i, p] = ut.parseSliceParams(n, s, a);\n if (ut.assertParamsValid(n, i, p), y.sizeFromShape(p) === 0)\n return t10.makeTensorInfo(p, n.dtype, []);\n if (t10.shouldExecuteOnCPU([n]) || n.dtype === \"string\") {\n let l = t10.texData.get(n.dataId), m = xE(l.values, i, p, n.shape, n.dtype);\n return t10.makeTensorInfo(p, n.dtype, m);\n }\n let { isPacked: u } = t10.texData.get(n.dataId), c = ut.isSliceContinous(n.shape, i, p);\n if (u || !c) {\n let l = O().getBool(\"WEBGL_PACK_ARRAY_OPERATIONS\") ? new dh(p) : new mh(p), m = [i];\n return t10.runWebGLProgram(l, [n], n.dtype, m);\n }\n return t10.uploadToGPU(n.dataId), BY(n, i, p, t10);\n}\nvar TA = { kernelName: Es, backendName: \"webgl\", kernelFunc: ls };\nvar VY = (r) => {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { blockShape: s, crops: a } = o;\n y.assert(n.shape.length <= 4, () => \"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet\");\n let i = s.reduce((b, C) => b * C), p = S.getReshaped(n.shape, s, i), u = S.getPermuted(p.length, s.length), c = S.getReshapedPermuted(n.shape, s, i), l = S.getSliceBeginCoords(a, s.length), m = S.getSliceSize(c, a, s.length), d = [], f = re({ inputs: { x: n }, backend: t10, attrs: { shape: p } }), h = yt({ inputs: { x: f }, backend: t10, attrs: { perm: u } }), g = re({ inputs: { x: h }, backend: t10, attrs: { shape: c } }), x = ls({ inputs: { x: g }, backend: t10, attrs: { begin: l, size: m } });\n return d.push(f), d.push(h), d.push(g), d.forEach((b) => t10.disposeIntermediateTensorInfo(b)), x;\n};\nvar _A = { kernelName: bs, backendName: \"webgl\", kernelFunc: VY };\nfunction zY(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, weights: s } = e, { size: a } = o, i = t10.readSync(n.dataId), p = t10.readSync(s.dataId), u = Kf(i, p, s.dtype, s.shape, a);\n return t10.makeTensorInfo([a], s.dtype, u);\n}\nvar $A = { kernelName: ti, backendName: \"webgl\", kernelFunc: zY };\nfunction WY(r) {\n let { inputs: e, backend: t10 } = r, { s0: o, s1: n } = e, s = t10.readSync(o.dataId), a = t10.readSync(n.dataId), i = S.assertAndGetBroadcastShape(Array.from(s), Array.from(a));\n return t10.makeTensorInfo([i.length], \"int32\", Int32Array.from(i));\n}\nvar EA = { kernelName: fp, backendName: \"webgl\", kernelFunc: WY };\nvar UY = \"return float(a != b);\";\nvar Bw = tt({ opSnippet: UY, cpuKernelImpl: uE, dtype: \"bool\" });\nvar AA = { kernelName: Nn, backendName: \"webgl\", kernelFunc: Bw };\nfunction Ka(r) {\n let { inputs: e, backend: t10 } = r, { input: o } = e, n = t10.texData.get(o.dataId);\n return At({ inputs: { x: n.complexTensorInfos.real }, backend: t10 });\n}\nvar RA = { kernelName: di, backendName: \"webgl\", kernelFunc: Ka };\nvar GY = \"return float(int(x));\";\nfunction DA(r, e) {\n let t10 = new Jt(r.shape, GY), o = e.runWebGLProgram(t10, [r], \"int32\");\n return { dataId: o.dataId, shape: o.shape, dtype: o.dtype };\n}\nfunction Vw(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { dtype: s } = o;\n if (s === \"complex64\") {\n if (n.dtype === \"complex64\")\n return At({ inputs: { x: n }, backend: t10 });\n let a = Br(n.shape), i = Vw({ inputs: { x: n }, backend: t10, attrs: { dtype: \"float32\" } }), p = Ar({ inputs: { real: i, imag: a }, backend: t10 });\n return a.dispose(), t10.disposeIntermediateTensorInfo(i), p;\n }\n if (n.dtype === \"complex64\") {\n let a = Ka({ inputs: { input: n }, backend: t10 }), i = Vw({ inputs: { x: a }, backend: t10, attrs: { dtype: s } });\n return t10.disposeIntermediateTensorInfo(a), i;\n }\n if (!y.hasEncodingLoss(n.dtype, s)) {\n let a = At({ inputs: { x: n }, backend: t10 });\n return { dataId: a.dataId, shape: a.shape, dtype: s };\n }\n if (t10.shouldExecuteOnCPU([n])) {\n let a = t10.texData.get(n.dataId).values, [i, p, u] = W$(a, n.shape, n.dtype, s);\n return t10.makeTensorInfo(i, p, u);\n }\n if (s === \"int32\")\n return DA(n, t10);\n if (s === \"bool\") {\n let a = t10.makeTensorInfo([], \"bool\", y.getTypedArrayFromDType(\"bool\", 1)), p = Bw({ inputs: { a: n, b: a }, backend: t10 });\n return t10.disposeIntermediateTensorInfo(a), p;\n }\n throw new Error(`Error in Cast: failed to cast ${n.dtype} to ${s}`);\n}\nvar FA = { kernelName: co, backendName: \"webgl\", kernelFunc: Vw };\nvar OA = \"return ceil(x);\";\nvar HY = he({ opSnippet: OA, packedOpSnippet: OA, cpuKernelImpl: U$ });\nvar PA = { kernelName: Wo, backendName: \"webgl\", kernelFunc: HY };\nvar fh = class {\n constructor(e) {\n this.variableNames = [\"A\"], this.customUniforms = [{ name: \"minVal\", type: \"float\" }, { name: \"maxVal\", type: \"float\" }], this.outputShape = e, this.userCode = `\n\n void main() {\n float value = getAAtOutCoords();\n if (isnan(value)) {\n setOutput(value);\n return;\n }\n\n setOutput(clamp(value, minVal, maxVal));\n }\n `;\n }\n};\nvar hh = class {\n constructor(e) {\n this.variableNames = [\"A\"], this.packedInputs = true, this.packedOutput = true, this.customUniforms = [{ name: \"minVal\", type: \"float\" }, { name: \"maxVal\", type: \"float\" }], this.outputShape = e, this.userCode = `\n void main() {\n vec4 value = getAAtOutCoords();\n\n if (any(isnan(value))) {\n setOutput(value);\n return;\n }\n\n setOutput(clamp(value, vec4(minVal), vec4(maxVal)));\n }\n `;\n }\n};\nfunction KY(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { clipValueMin: s, clipValueMax: a } = o, i;\n O().getBool(\"WEBGL_PACK_CLIP\") ? i = new hh(n.shape) : i = new fh(n.shape);\n let p = [[s], [a]];\n return t10.runWebGLProgram(i, [n], n.dtype, p);\n}\nvar MA = { kernelName: lo, backendName: \"webgl\", kernelFunc: KY };\nvar gh = class {\n constructor(e) {\n this.variableNames = [\"real\", \"imag\"], this.outputShape = e, this.userCode = `\n void main() {\n float re = abs(getRealAtOutCoords());\n float im = abs(getImagAtOutCoords());\n float mx = max(re, im);\n\n // sadly the length function in glsl is not underflow-safe\n // (at least not on Intel GPUs). So the safe solution is\n // to ensure underflow-safety in all cases.\n setOutput(\n mx == 0.0 ? 0.0 : mx * length(vec2(1, min(re, im)/mx))\n );\n }\n `;\n }\n};\nfunction LA(r, e) {\n return { dataId: e.dataId, dtype: e.dtype, shape: r.shape };\n}\nfunction qY(r) {\n let { inputs: e, backend: t10 } = r, { x: o } = e, n = t10.texData.get(o.dataId), s = new gh(o.shape), a = [LA(o, n.complexTensorInfos.real), LA(o, n.complexTensorInfos.imag)];\n return t10.runWebGLProgram(s, a, a[0].dtype);\n}\nvar BA = { kernelName: hp, backendName: \"webgl\", kernelFunc: qY };\nvar xh = class {\n constructor(e) {\n this.outputShape = [], this.outputShape = S.computeOutShape(e, 1), this.variableNames = e.map((a, i) => `T${i}`);\n let t10 = new Array(e.length - 1);\n t10[0] = e[0][1];\n for (let a = 1; a < t10.length; a++)\n t10[a] = t10[a - 1] + e[a][1];\n let o = [`if (yC < ${t10[0]}) setOutput(getT0(yR, yC));`];\n for (let a = 1; a < t10.length; a++) {\n let i = t10[a - 1];\n o.push(`else if (yC < ${t10[a]}) setOutput(getT${a}(yR, yC-${i}));`);\n }\n let n = t10.length, s = t10[t10.length - 1];\n o.push(`else setOutput(getT${n}(yR, yC-${s}));`), this.userCode = `\n void main() {\n ivec2 coords = getOutputCoords();\n int yR = coords.x;\n int yC = coords.y;\n\n ${o.join(`\n `)}\n }\n `;\n }\n};\nvar bh = class {\n constructor(e, t10) {\n this.packedInputs = true, this.packedOutput = true, this.outputShape = [], this.outputShape = S.computeOutShape(e, t10);\n let o = this.outputShape, n = o.length, s = $e(n), a = Et(\"coords\", n), i = [\"x\", \"y\", \"z\", \"w\", \"u\", \"v\"].slice(0, n);\n this.variableNames = e.map((h, g) => `T${g}`);\n let p = new Array(e.length - 1);\n p[0] = e[0][t10];\n for (let h = 1; h < p.length; h++)\n p[h] = p[h - 1] + e[h][t10];\n let u = i[t10], c = i.slice(-2), l = i.join(), m = `if (${u} < ${p[0]}) {\n return getChannel(\n getT0(${l}), vec2(${c.join()}));\n }`;\n for (let h = 1; h < p.length; h++) {\n let g = p[h - 1];\n m += `\n if (${u} < ${p[h]} && ${u} >= ${p[h - 1]}) {\n return getChannel(\n getT${h}(${yh(i, u, g)}),\n vec2(${yh(c, u, g)}));\n }`;\n }\n let d = p.length, f = p[p.length - 1];\n m += `\n return getChannel(\n getT${d}(${yh(i, u, f)}),\n vec2(${yh(c, u, f)}));`, this.userCode = `\n float getValue(${i.map((h) => \"int \" + h)}) {\n ${m}\n }\n\n void main() {\n ${s} coords = getOutputCoords();\n vec4 result = vec4(getValue(${a}), 0., 0., 0.);\n\n ${a[n - 1]} = ${a[n - 1]} + 1;\n if (${a[n - 1]} < ${o[n - 1]}) {\n result.g = getValue(${a});\n }\n\n ${a[n - 2]} = ${a[n - 2]} + 1;\n if (${a[n - 2]} < ${o[n - 2]}) {\n result.a = getValue(${a});\n }\n\n ${a[n - 1]} = ${a[n - 1]} - 1;\n if (${a[n - 2]} < ${o[n - 2]} &&\n ${a[n - 1]} < ${o[n - 1]}) {\n result.b = getValue(${a});\n }\n setOutput(result);\n }\n `;\n }\n};\nfunction yh(r, e, t10) {\n let o = r.indexOf(e);\n return r.map((s, a) => a === o ? `${s} - ${t10}` : s).join();\n}\nfunction Wu(r) {\n let { inputs: e, backend: t10 } = r, { input: o } = e, n = t10.texData.get(o.dataId);\n return At({ inputs: { x: n.complexTensorInfos.imag }, backend: t10 });\n}\nvar VA = { kernelName: ci, backendName: \"webgl\", kernelFunc: Wu };\nfunction hc(r, e, t10) {\n let o = r[0].dtype;\n if (o === \"complex64\") {\n let d = r.map((b) => Ka({ inputs: { input: b }, backend: t10 })), f = r.map((b) => Wu({ inputs: { input: b }, backend: t10 })), h = hc(d, e, t10), g = hc(f, e, t10), x = Ar({ inputs: { real: h, imag: g }, backend: t10 });\n return d.forEach((b) => t10.disposeIntermediateTensorInfo(b)), f.forEach((b) => t10.disposeIntermediateTensorInfo(b)), t10.disposeIntermediateTensorInfo(h), t10.disposeIntermediateTensorInfo(g), x;\n }\n let n = t10.shouldExecuteOnCPU(r);\n if (o === \"string\" && (n = true), n) {\n let d = r.map((w) => {\n let _ = [-1, y.sizeFromShape(w.shape.slice(e))];\n return re({ inputs: { x: w }, backend: t10, attrs: { shape: _ } });\n }), f = d.map((w) => ({ vals: t10.readSync(w.dataId), shape: w.shape })), h = S.computeOutShape(d.map((w) => w.shape), 1), g = d[0].shape[0] === 1, x = G$(f, h, o, g), b = S.computeOutShape(r.map((w) => w.shape), e), C = t10.makeTensorInfo(b, o, x);\n return d.forEach((w) => t10.disposeIntermediateTensorInfo(w)), C;\n }\n let s = r.filter((d) => y.sizeFromShape(d.shape) > 0), a = O().getBool(\"WEBGL_PACK_ARRAY_OPERATIONS\") && s[0].shape.length > 1;\n if (s.length === 1) {\n let d = a ? new Jt(r[0].shape, Zs) : new Er(r[0].shape, Zs);\n return t10.runWebGLProgram(d, r, o);\n }\n let i = O().getNumber(\"WEBGL_MAX_TEXTURES_IN_SHADER\");\n if (s.length > i) {\n let d = [];\n for (let h = 0; h < s.length; h += i) {\n let g = s.slice(h, h + i);\n d.push(hc(g, e, t10));\n }\n let f = hc(d, e, t10);\n for (let h of d)\n t10.disposeIntermediateTensorInfo(h);\n return f;\n }\n if (a) {\n let d = new bh(s.map((f) => f.shape), e);\n return t10.runWebGLProgram(d, s, o);\n }\n let { tensors2D: p, outShape: u } = jY(s, e, t10), c = new xh(p.map((d) => d.shape)), l = t10.runWebGLProgram(c, p, o);\n p.forEach((d) => t10.disposeIntermediateTensorInfo(d));\n let m = re({ inputs: { x: l }, attrs: { shape: u }, backend: t10 });\n return t10.disposeIntermediateTensorInfo(l), m;\n}\nfunction jY(r, e, t10) {\n let o = S.computeOutShape(r.map((s) => s.shape), e);\n return { tensors2D: r.map((s) => re({ inputs: { x: s }, attrs: { shape: [-1, y.sizeFromShape(s.shape.slice(e))] }, backend: t10 })), outShape: o };\n}\nfunction zw(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { axis: n } = o, s = y.parseAxisParam(n, e[0].shape)[0], a = e.map((u) => u.shape);\n S.assertParamsConsistent(a, s);\n let i = S.computeOutShape(e.map((u) => u.shape), s);\n if (y.sizeFromShape(i) === 0)\n return t10.makeTensorInfo(i, e[0].dtype, []);\n let p = e.filter((u) => y.sizeFromShape(u.shape) > 0);\n return p.length === 1 ? At({ inputs: { x: p[0] }, backend: t10 }) : hc(p, s, t10);\n}\nvar zA = { kernelName: Cs, backendName: \"webgl\", kernelFunc: zw };\nvar gc = class {\n constructor(e, t10 = false, o = null, n = false, s = false) {\n this.variableNames = [\"x\", \"W\"], this.outputShape = e.outShape;\n let a = e.padInfo.top, i = e.padInfo.left, p = e.strideHeight, u = e.strideWidth, c = e.dilationHeight, l = e.dilationWidth, m = e.filterHeight, d = e.filterWidth, f = Math.floor(e.inChannels / 4) * 4, h = e.inChannels % 4, g = e.dataFormat === \"channelsLast\", x = g ? 1 : 2, b = g ? 2 : 3, C = g ? 3 : 1, w = \"\", k = \"\";\n o && (n ? w = `float activation(float a) {\n float b = getPreluActivationWeightsAtOutCoords();\n ${o}\n }` : s ? w = `float activation(float a) {\n float b = getLeakyreluAlphaAtOutCoords();\n ${o}\n }` : w = `\n float activation(float x) {\n ${o}\n }\n `, k = \"result = activation(result);\");\n let _ = t10 ? \"result += getBiasAtOutCoords();\" : \"\";\n t10 && this.variableNames.push(\"bias\"), n && this.variableNames.push(\"preluActivationWeights\"), s && this.variableNames.push(\"leakyreluAlpha\"), this.userCode = `\n ${w}\n\n const ivec2 strides = ivec2(${p}, ${u});\n const ivec2 pads = ivec2(${a}, ${i});\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d2 = coords[${C}];\n\n ivec2 xRCCorner =\n ivec2(coords[${x}], coords[${b}]) * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // Convolve x(?, ?, d1) with w(:, :, d1, d2) to get y(yR, yC, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < ${m}; wR++) {\n int xR = xRCorner + wR * ${c};\n\n if (xR < 0 || xR >= ${e.inHeight}) {\n continue;\n }\n\n for (int wC = 0; wC < ${d}; wC++) {\n int xC = xCCorner + wC * ${l};\n\n if (xC < 0 || xC >= ${e.inWidth}) {\n continue;\n }\n\n for (int d1 = 0; d1 < ${f}; d1 += 4) {\n vec4 wValues = vec4(\n getW(wR, wC, d1, d2),\n getW(wR, wC, d1 + 1, d2),\n getW(wR, wC, d1 + 2, d2),\n getW(wR, wC, d1 + 3, d2)\n );\n\n if (${g}) {\n vec4 xValues = vec4(\n getX(batch, xR, xC, d1),\n getX(batch, xR, xC, d1 + 1),\n getX(batch, xR, xC, d1 + 2),\n getX(batch, xR, xC, d1 + 3)\n );\n dotProd += dot(xValues, wValues);\n } else {\n vec4 xValues = vec4(\n getX(batch, d1, xR, xC),\n getX(batch, d1 + 1, xR, xC),\n getX(batch, d1 + 2, xR, xC),\n getX(batch, d1 + 3, xR, xC)\n );\n dotProd += dot(xValues, wValues);\n }\n }\n\n if (${h === 1}) {\n\n if (${g}) {\n dotProd +=\n getX(batch, xR, xC, ${f}) *\n getW(wR, wC, ${f}, d2);\n } else {\n dotProd +=\n getX(batch, ${f}, xR, xC) *\n getW(wR, wC, ${f}, d2);\n }\n\n } else if (${h === 2}) {\n vec2 wValues = vec2(\n getW(wR, wC, ${f}, d2),\n getW(wR, wC, ${f} + 1, d2)\n );\n\n if (${g}) {\n vec2 xValues = vec2(\n getX(batch, xR, xC, ${f}),\n getX(batch, xR, xC, ${f} + 1)\n );\n dotProd += dot(xValues, wValues);\n } else {\n vec2 xValues = vec2(\n getX(batch, ${f}, xR, xC),\n getX(batch, ${f} + 1, xR, xC)\n );\n dotProd += dot(xValues, wValues);\n }\n\n } else if (${h === 3}) {\n vec3 wValues = vec3(\n getW(wR, wC, ${f}, d2),\n getW(wR, wC, ${f} + 1, d2),\n getW(wR, wC, ${f} + 2, d2)\n );\n\n if (${g}) {\n vec3 xValues = vec3(\n getX(batch, xR, xC, ${f}),\n getX(batch, xR, xC, ${f} + 1),\n getX(batch, xR, xC, ${f} + 2)\n );\n dotProd += dot(xValues, wValues);\n } else {\n vec3 xValues = vec3(\n getX(batch, ${f}, xR, xC),\n getX(batch, ${f} + 1, xR, xC),\n getX(batch, ${f} + 2, xR, xC)\n );\n dotProd += dot(xValues, wValues);\n }\n\n }\n }\n }\n\n float result = dotProd;\n ${_}\n ${k}\n setOutput(result);\n }\n `;\n }\n};\nvar Ch = class {\n constructor(e) {\n this.variableNames = [\"x\", \"W\"], this.outputShape = e.outShape;\n let t10 = e.padInfo.front, o = e.padInfo.top, n = e.padInfo.left, s = e.strideDepth, a = e.strideHeight, i = e.strideWidth, p = e.dilationDepth, u = e.dilationHeight, c = e.dilationWidth, l = e.filterDepth, m = e.filterHeight, d = e.filterWidth, f = Math.floor(e.inChannels / 4) * 4, h = e.inChannels % 4;\n this.userCode = `\n const ivec3 strides = ivec3(${s}, ${a}, ${i});\n const ivec3 pads = ivec3(${t10}, ${o}, ${n});\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int d2 = coords.u;\n\n ivec3 xFRCCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n int xFCorner = xFRCCorner.x;\n int xRCorner = xFRCCorner.y;\n int xCCorner = xFRCCorner.z;\n\n // Convolve x(?, ?, ?, d1) with w(:, :, :, d1, d2) to get\n // y(yF, yR, yC, d2). ? = to be determined. : = across all\n // values in that axis.\n float dotProd = 0.0;\n for (int wF = 0; wF < ${l}; wF++) {\n int xF = xFCorner + wF * ${p};\n\n if (xF < 0 || xF >= ${e.inDepth}) {\n continue;\n }\n\n for (int wR = 0; wR < ${m}; wR++) {\n int xR = xRCorner + wR * ${u};\n\n if (xR < 0 || xR >= ${e.inHeight}) {\n continue;\n }\n\n for (int wC = 0; wC < ${d}; wC++) {\n int xC = xCCorner + wC * ${c};\n\n if (xC < 0 || xC >= ${e.inWidth}) {\n continue;\n }\n\n for (int d1 = 0; d1 < ${f}; d1 += 4) {\n vec4 xValues = vec4(\n getX(batch, xF, xR, xC, d1),\n getX(batch, xF, xR, xC, d1 + 1),\n getX(batch, xF, xR, xC, d1 + 2),\n getX(batch, xF, xR, xC, d1 + 3)\n );\n vec4 wValues = vec4(\n getW(wF, wR, wC, d1, d2),\n getW(wF, wR, wC, d1 + 1, d2),\n getW(wF, wR, wC, d1 + 2, d2),\n getW(wF, wR, wC, d1 + 3, d2)\n );\n\n dotProd += dot(xValues, wValues);\n }\n\n if (${h === 1}) {\n dotProd +=\n getX(batch, xF, xR, xC, ${f}) *\n getW(wF, wR, wC, ${f}, d2);\n } else if (${h === 2}) {\n vec2 xValues = vec2(\n getX(batch, xF, xR, xC, ${f}),\n getX(batch, xF, xR, xC, ${f} + 1)\n );\n vec2 wValues = vec2(\n getW(wF, wR, wC, ${f}, d2),\n getW(wF, wR, wC, ${f} + 1, d2)\n );\n dotProd += dot(xValues, wValues);\n } else if (${h === 3}) {\n vec3 xValues = vec3(\n getX(batch, xF, xR, xC, ${f}),\n getX(batch, xF, xR, xC, ${f} + 1),\n getX(batch, xF, xR, xC, ${f} + 2)\n );\n vec3 wValues = vec3(\n getW(wF, wR, wC, ${f}, d2),\n getW(wF, wR, wC, ${f} + 1, d2),\n getW(wF, wR, wC, ${f} + 2, d2)\n );\n dotProd += dot(xValues, wValues);\n }\n }\n }\n }\n setOutput(dotProd);\n }\n `;\n }\n};\nvar xc = class {\n constructor(e, t10 = false, o = null, n = false, s = false) {\n this.variableNames = [\"x\", \"W\"], this.packedInputs = true, this.packedOutput = true, this.customUniforms = [{ name: \"pads\", type: \"ivec2\" }, { name: \"strides\", type: \"ivec2\" }, { name: \"dilations\", type: \"ivec2\" }, { name: \"inDims\", type: \"ivec2\" }], this.outputShape = e.outShape, this.enableShapeUniforms = lt(this.outputShape.length);\n let a = e.padInfo.left, i = e.strideWidth, p = e.dilationWidth, u = e.filterHeight, c = e.filterWidth, l = c, m = `\n int xR; int xC; int xCOffset;\n vec4 wTexel; vec4 previous; vec4 final;`;\n for (let g = 0; g < c; g++)\n m += `\n vec4 xTexelC${g * 2};\n int xTexelC${g * 2}Ready;\n vec4 xTexelC${g * 2 + 1};\n int xTexelC${g * 2 + 1}Ready;\n vec4 xC${g};`;\n m += `\n for (int r = 0; r < ${u}; r++) {\n for (int d1 = 0; d1 < ${e.inChannels}; d1 += 2) {\n `;\n for (let g = 0; g < c; g++)\n m += `\n xTexelC${g * 2} = vec4(0.0);\n xTexelC${g * 2}Ready = 0;\n xTexelC${g * 2 + 1} = vec4(0.0);\n xTexelC${g * 2 + 1}Ready = 0;\n xC${g} = vec4(0.0);`;\n m += `\n xR = xRCorner + r * dilations[0];\n if (xR >=0 && xR < inDims[0]) {\n `;\n for (let g = 0; g < (l + 1) / 2; g++) {\n let x = g * 2;\n if (m += `\n xC = xCCorner + ${x * p};\n `, i === 1) {\n if (x < c && (a % 2 === 1 ? (m += `\n xCOffset = xC + 1;\n if (xCOffset >= 0 && xCOffset < inDims[1] && xTexelC${x}Ready == 0) {\n xTexelC${x} = getX(batch, xR, xCOffset, d1);\n\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC${x}.zw = vec2(0.0);\n }\n xTexelC${x}Ready = 1;\n }\n `, p === 1 && x > 0 ? m += `\n xC${x} = vec4(xTexelC${x - 2}.zw, xTexelC${x}.xy);\n ` : m += `\n xCOffset = xC + 1 - 2;\n\n if (xCOffset >= 0 && xCOffset < inDims[1]) {\n previous = getX(batch, xR, xCOffset, d1);\n\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n previous.zw = vec2(0.0);\n }\n\n xC${x} = vec4(previous.zw, xTexelC${x}.xy);\n } else {\n xC${x} = vec4(0.0, 0.0, xTexelC${x}.xy);\n }\n `) : m += `\n if (xC >= 0 && xC < inDims[1] && xTexelC${x}Ready == 0) {\n xTexelC${x} = getX(batch, xR, xC, d1);\n if (xC + 1 >= inDims[1]) {\n xTexelC${x}.zw = vec2(0.0);\n }\n xTexelC${x}Ready = 1;\n }\n\n xC${x} = xTexelC${x};\n `, x + 1 < c)) {\n let b = a % 2 === 0 ? y.nearestLargerEven(p) : p;\n p % 2 === 0 && a % 2 === 1 || p % 2 !== 0 && a % 2 !== 1 ? (m += `\n xCOffset = xC + imod(pads[1], 2) + ${b};\n\n if (xCOffset >= 0 && xCOffset < inDims[1] && xTexelC${x + 1}Ready == 0) {\n xTexelC${x + 1} = getX(batch, xR, xCOffset, d1);\n\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC${x + 1}.zw = vec2(0.0);\n }\n xTexelC${x + 1}Ready = 1;\n }\n `, p > 1 ? m += `\n xCOffset -= 2;\n if (xCOffset >= 0 && xCOffset < inDims[1]) {\n previous = getX(batch, xR, xCOffset, d1);\n xC${x + 1} = vec4(previous.zw, xTexelC${x + 1}.xy);\n } else {\n xC${x + 1} = vec4(0.0, 0.0, xTexelC${x + 1}.xy);\n }\n ` : m += `\n xC${x + 1} = vec4(xTexelC${x}.zw, xTexelC${x + 1}.xy);\n `) : b === 1 ? m += `\n xC${x + 1} = xTexelC${x};\n ` : m += `\n xCOffset = xC + ${b};\n\n if (xCOffset >= 0 && xCOffset < inDims[1] && xTexelC${x + 1}Ready == 0) {\n xTexelC${x + 1} = getX(batch, xR, xCOffset, d1);\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC${x + 1}.zw = vec2(0.0);\n }\n xTexelC${x + 1}Ready = 1;\n }\n\n xC${x + 1} = xTexelC${x + 1};\n `;\n }\n } else\n x < c && (a % 2 === 1 ? (m += `\n xCOffset = xC + 1 - strides[1];\n if(xCOffset >= 0 && xCOffset < inDims[1] && xTexelC${x}Ready == 0) {\n xTexelC${x} = getX(batch, xR, xCOffset, d1);\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC${x}.zw = vec2(0.0);\n }\n xTexelC${x}Ready = 1;\n }\n\n if(xC + 1 >= 0 && xC + 1 < inDims[1] && xTexelC${x + 1}Ready == 0) {\n xTexelC${x + 1} = getX(batch, xR, xC + 1, d1);\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xC + 2 >= inDims[1]) {\n xTexelC${x + 1}.zw = vec2(0.0);\n }\n xTexelC${x + 1}Ready = 1;\n }\n\n xC${x} = vec4(xTexelC${x}.zw, xTexelC${x + 1}.zw);\n `, x + 1 < c && (m += `\n final = vec4(0.0);\n xCOffset = xC + 1 + strides[1];\n if(xCOffset >= 0 && xCOffset < inDims[1]) {\n final = getX(batch, xR, xCOffset, d1);\n }\n xC${x + 1} = vec4(xTexelC${x + 1}.xy, final.xy);\n `)) : (m += `\n if(xC >= 0 && xC < inDims[1] && xTexelC${x}Ready == 0) {\n xTexelC${x} = getX(batch, xR, xC, d1);\n if (xC + 1 >= inDims[1]) {\n xTexelC${x}.zw = vec2(0.0);\n }\n xTexelC${x}Ready = 1;\n }\n\n xCOffset = xC + strides[1];\n if(xCOffset >= 0 && xCOffset < inDims[1] && xTexelC${x + 1}Ready == 0) {\n xTexelC${x + 1} = getX(batch, xR, xCOffset, d1);\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC${x + 1}.zw = vec2(0.);\n }\n xTexelC${x + 1}Ready = 1;\n }\n\n xC${x} = vec4(\n xTexelC${x}.xy, xTexelC${x + 1}.xy);\n `, x + 1 < c && (m += `\n xC${x + 1} = vec4(xTexelC${x}.zw, xTexelC${x + 1}.zw);\n `)));\n x < c && (m += `\n wTexel = getW(r, ${x}, d1, d2);\n dotProd += xC${x}.xxzz * vec4(wTexel.xy, wTexel.xy);\n if(d1 + 1 < ${e.inChannels}) {\n dotProd += xC${x}.yyww * vec4(wTexel.zw, wTexel.zw);\n }\n `, x + 1 < c && (m += `\n wTexel = getW(r, ${x + 1}, d1, d2);\n dotProd += xC${x + 1}.xxzz * vec4(wTexel.xy, wTexel.xy);\n if(d1 + 1 < ${e.inChannels}) {\n dotProd += xC${x + 1}.yyww * vec4(wTexel.zw, wTexel.zw);\n }\n `));\n }\n m += `\n }\n `, m += `\n }\n `, m += `\n }\n `;\n let d = \"\", f = \"\";\n o && (n ? d = `vec4 activation(vec4 a) {\n vec4 b = getPreluActivationWeightsAtOutCoords();\n ${o}\n }` : s ? d = `vec4 activation(vec4 a) {\n vec4 b = getLeakyreluAlphaAtOutCoords();\n ${o}\n }` : d = `vec4 activation(vec4 x) {\n ${o}\n }`, f = \"result = activation(result);\");\n let h = t10 ? \"result += getBiasAtOutCoords();\" : \"\";\n t10 && this.variableNames.push(\"bias\"), n && this.variableNames.push(\"preluActivationWeights\"), s && this.variableNames.push(\"leakyreluAlpha\"), this.userCode = `\n ${d}\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords.x;\n ivec2 xRCCorner = coords.yz * strides - pads;\n int d2 = coords.w;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n //intialize dotProd with a small epsilon seems to reduce GPU accuracy loss.\n vec4 dotProd = vec4(0.000000000000001);\n\n ${m}\n\n vec4 result = dotProd - vec4(0.000000000000001);\n ${h}\n ${f}\n setOutput(result);\n }\n `;\n }\n};\nvar Sh = class {\n constructor(e, t10) {\n this.variableNames = [\"A\"], this.packedInputs = true, this.packedOutput = true, this.customUniforms = [{ name: \"inputShape\", type: \"ivec4\" }, { name: \"pad\", type: \"ivec2\" }, { name: \"stride\", type: \"ivec2\" }, { name: \"dilation\", type: \"ivec2\" }, { name: \"inChannels\", type: \"int\" }, { name: \"itemsPerBlockRow\", type: \"int\" }, { name: \"outWidth\", type: \"int\" }], this.outputShape = e, this.enableShapeUniforms = lt(this.outputShape.length);\n let { dataFormat: o } = t10, n = wt(), s = o === \"channelsLast\", a = s ? 1 : 2, i = s ? 2 : 3, p = this.enableShapeUniforms ? \"if(blockIndex < outShape[2] && pos < outShape[1]) {\" : `if(blockIndex < ${e[2]} && pos < ${e[1]}) {`, u = \"\";\n for (let c = 0; c <= 1; c++)\n for (let l = 0; l <= 1; l++)\n u += `\n blockIndex = rc.z + ${l};\n pos = rc.y + ${c};\n\n ${p}\n offsetY = int(blockIndex / outWidth) * stride[0] - pad[0];\n d0 = offsetY + dilation[0] * (pos / itemsPerBlockRow);\n\n if(d0 < inputShape[${a}] && d0 >= 0) {\n // Use custom imod instead mod. On Intel GPU, mod may generate\n // unexpected value.\n // https://github.com/tensorflow/tfjs/issues/5447\n offsetX = imod(blockIndex, outWidth) * stride[1] - pad[1];\n d1 = offsetX + dilation[1] * (imod(pos, itemsPerBlockRow) /\n inChannels);\n\n if(d1 < inputShape[${i}] && d1 >= 0) {\n\n ch = imod(pos, inChannels);\n\n if (${s}) {\n innerDims = vec2(d1, ch);\n result[${c * 2 + l}] = getChannel(\n getA(rc.x, d0, int(innerDims.x),\n int(innerDims.y)), innerDims);\n } else {\n innerDims = vec2(d0, d1);\n result[${c * 2 + l}] = getChannel(\n getA(rc.x, ch, int(innerDims.x),\n int(innerDims.y)), innerDims);\n }\n }\n }\n }\n `;\n this.userCode = `\n void main() {\n ivec3 rc = getOutputCoords();\n\n vec4 result = vec4(0);\n\n int blockIndex, pos, offsetY, d0, offsetX, d1, ch;\n vec2 innerDims;\n\n ${u}\n\n ${n.output} = result;\n }\n `;\n }\n};\nfunction wh(r, e) {\n let t10 = r.length;\n return t10 >= 3 ? e ? [...r.slice(0, -3), r[t10 - 3] * r[t10 - 2], r[t10 - 1]] : [...r.slice(0, -3), r[t10 - 3], r[t10 - 2] * r[t10 - 1]] : !e && t10 === 1 && r[0] > 1 ? [r[0], 1] : null;\n}\nfunction Ih({ x: r, filter: e, convInfo: t10, backend: o, bias: n = null, preluActivationWeights: s = null, leakyreluAlpha: a = 0, activation: i = null }) {\n let p = r.shape, u = o.texData.get(r.dataId), c = t10.inChannels, l = p[0] * p[1] * p[2], m = t10.outChannels, d = t10.dataFormat === \"channelsLast\", f = false, h = false, g, x = [];\n if (s != null) {\n let w = wh(s.shape, d);\n w != null && (s = re({ inputs: { x: s }, backend: o, attrs: { shape: w } }), x.push(s));\n }\n if (n != null) {\n let w = wh(n.shape, d);\n w != null && (n = re({ inputs: { x: n }, backend: o, attrs: { shape: w } }), x.push(n));\n }\n if (!((l === 1 || m === 1) && c > Mw) && u.isPacked && d && u.texture != null && p[2] % 2 !== 0 && y.arraysEqual(u.shape.slice(-3), p.slice(-3))) {\n let w = p[0] * p[1] * (p[2] + 1), k = { dataId: r.dataId, shape: [1, w, t10.inChannels], dtype: r.dtype }, _ = u.shape;\n u.shape = u.shape.slice(), u.shape[u.shape.length - 2]++, y.assert(Bi(u.shape, k.shape), () => `packed reshape ${u.shape} to ${k.shape} isn't free`);\n let E = re({ inputs: { x: e }, backend: o, attrs: { shape: [1, t10.inChannels, t10.outChannels] } });\n x.push(E);\n let A = zu({ a: k, b: E, backend: o, transposeA: f, transposeB: h, bias: n, activation: i, preluActivationWeights: s, leakyreluAlpha: a }), R = o.texData.get(A.dataId);\n y.assert(R.isPacked, () => \"batchMatMul result is expected to be packed\"), u.shape = _, R.shape = t10.outShape, g = At({ inputs: { x: A }, backend: o }), g.shape = t10.outShape, x.push(A);\n } else {\n let w = t10.outHeight * t10.outWidth, k = re({ inputs: { x: r }, backend: o, attrs: { shape: d ? [t10.batchSize, w, t10.inChannels] : [t10.batchSize, t10.inChannels, w] } }), _ = re({ inputs: { x: e }, backend: o, attrs: { shape: [1, t10.inChannels, t10.outChannels] } }), E = zu({ a: d ? k : _, b: d ? _ : k, transposeA: !d, transposeB: h, backend: o, bias: n, activation: i, preluActivationWeights: s, leakyreluAlpha: a });\n g = re({ inputs: { x: E }, backend: o, attrs: { shape: t10.outShape } }), x.push(k), x.push(_), x.push(E);\n }\n for (let w of x)\n o.disposeIntermediateTensorInfo(w);\n return g;\n}\nfunction vh({ x: r, filter: e, convInfo: t10, backend: o, bias: n = null, preluActivationWeights: s = null, leakyreluAlpha: a = 0, activation: i = null }) {\n let { filterWidth: p, filterHeight: u, inChannels: c, outWidth: l, outHeight: m, dataFormat: d } = t10, f = d === \"channelsLast\", h = p * u * c, g = m * l, x = [t10.batchSize, h, g], b = true, C = false, w = [];\n if (s != null) {\n let H = wh(s.shape, f);\n H != null && (s = re({ inputs: { x: s }, backend: o, attrs: { shape: H } }), w.push(s));\n }\n if (n != null) {\n let H = wh(n.shape, f);\n H != null && (n = re({ inputs: { x: n }, backend: o, attrs: { shape: H } }), w.push(n));\n }\n let k = re({ inputs: { x: e }, backend: o, attrs: { shape: [1, h, y.sizeFromShape(e.shape) / h] } });\n w.push(k);\n let _ = new Sh(x, t10), E = [r.shape, [t10.padInfo.top, t10.padInfo.left], [t10.strideHeight, t10.strideWidth], [t10.dilationHeight, t10.dilationWidth], [t10.inChannels], [t10.filterWidth * t10.inChannels], [t10.outWidth]], A = o.runWebGLProgram(_, [r], \"float32\", E), R = re({ inputs: { x: A }, backend: o, attrs: { shape: x } });\n w.push(A), w.push(R);\n let D = n != null, P = s != null, M = i === \"leakyrelu\", L = i ? Ha(i, true) : null, V = new fc(f ? R.shape : k.shape, f ? k.shape : R.shape, f ? [t10.batchSize, g, t10.outChannels] : [t10.batchSize, t10.outChannels, g], b, C, D, L, P, M), z = f ? [R, k] : [k, R];\n if (n && z.push(n), P && z.push(s), M) {\n let H = o.makeTensorInfo([], \"float32\", y.createScalarValue(a, \"float32\"));\n z.push(H), w.push(H);\n }\n let U = o.runWebGLProgram(V, z, \"float32\"), K = re({ inputs: { x: U }, backend: o, attrs: { shape: t10.outShape } });\n w.push(U);\n for (let H of w)\n o.disposeIntermediateTensorInfo(H);\n return K;\n}\nfunction XY(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, filter: s } = e, { strides: a, pad: i, dataFormat: p, dilations: u, dimRoundingMode: c } = o, l = S.convertConv2DDataFormat(p), m = S.computeConv2DInfo(n.shape, s.shape, a, u, i, c, false, l), d;\n if (m.filterHeight === 1 && m.filterWidth === 1 && m.dilationHeight === 1 && m.dilationWidth === 1 && m.strideHeight === 1 && m.strideWidth === 1 && (m.padInfo.type === \"SAME\" || m.padInfo.type === \"VALID\"))\n d = Ih({ x: n, filter: s, convInfo: m, backend: t10 });\n else if (m.strideWidth <= 2 && l === \"channelsLast\" && O().getBool(\"WEBGL_EXP_CONV\")) {\n let h = new xc(m), g = [[m.padInfo.top, m.padInfo.left], [m.strideHeight, m.strideWidth], [m.dilationHeight, m.dilationWidth], [m.inHeight, m.inWidth]];\n d = t10.runWebGLProgram(h, [n, s], \"float32\", g);\n } else if (O().getBool(\"WEBGL_CONV_IM2COL\"))\n d = vh({ x: n, filter: s, convInfo: m, backend: t10 });\n else {\n let h = new gc(m);\n d = t10.runWebGLProgram(h, [n, s], \"float32\");\n }\n let f = re({ inputs: { x: d }, backend: t10, attrs: { shape: m.outShape } });\n return t10.disposeIntermediateTensorInfo(d), f;\n}\nvar WA = { kernelName: Uo, backendName: \"webgl\", kernelFunc: XY };\nvar kh = class {\n constructor(e) {\n this.variableNames = [\"x\", \"dy\"], this.outputShape = e.filterShape;\n let t10 = e.strideHeight, o = e.strideWidth, n = e.padInfo.top, s = e.padInfo.left, a = e.dataFormat === \"channelsLast\";\n this.userCode = `\n void main() {\n ivec4 coords = getOutputCoords();\n int wR = coords.x;\n int wC = coords.y;\n int d1 = coords.z;\n int d2 = coords.w;\n\n // Convolve x(?, ?, d1) with dy(:, :, d2) to get dw(wR, wC, d1, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int b = 0; b < ${e.batchSize}; b++) {\n for (int yR = 0; yR < ${e.outHeight}; yR++) {\n int xR = wR + yR * ${t10} - ${n};\n\n if (xR < 0 || xR >= ${e.inHeight}) {\n continue;\n }\n\n for (int yC = 0; yC < ${e.outWidth}; yC++) {\n int xC = wC + yC * ${o} - ${s};\n\n if (xC < 0 || xC >= ${e.inWidth}) {\n continue;\n }\n\n if (${a}) {\n float dyValue = getDy(b, yR, yC, d2);\n float xValue = getX(b, xR, xC, d1);\n dotProd += (xValue * dyValue);\n } else {\n float dyValue = getDy(b, d2, yR, yC);\n float xValue = getX(b, d1, xR, xC);\n dotProd += (xValue * dyValue);\n }\n\n }\n }\n }\n setOutput(dotProd);\n }\n `;\n }\n};\nvar Nh = class {\n constructor(e) {\n this.variableNames = [\"dy\", \"W\"], this.outputShape = e.inShape;\n let t10 = e.filterHeight, o = e.filterWidth, n = e.strideHeight, s = e.strideWidth, a = e.dataFormat === \"channelsLast\", i = t10 - 1 - e.padInfo.top, p = o - 1 - e.padInfo.left, u = a ? 1 : 2, c = a ? 2 : 3, l = a ? 3 : 1;\n this.userCode = `\n const ivec2 pads = ivec2(${i}, ${p});\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords[${l}];\n\n ivec2 dyCorner = ivec2(coords[${u}], coords[${c}]) - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < ${t10}; wR++) {\n float dyR = float(dyRCorner + wR) / ${n}.0;\n\n if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = ${t10} - 1 - wR;\n\n for (int wC = 0; wC < ${o}; wC++) {\n float dyC = float(dyCCorner + wC) / ${s}.0;\n\n if (dyC < 0.0 || dyC >= ${e.outWidth}.0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = ${o} - 1 - wC;\n\n for (int d2 = 0; d2 < ${e.outChannels}; d2++) {\n\n if (${a}) {\n float xValue = getDy(batch, idyR, idyC, d2);\n float wValue = getW(wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n } else {\n float xValue = getDy(batch, d2, idyR, idyC);\n float wValue = getW(wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n }\n\n }\n }\n }\n setOutput(dotProd);\n }\n `;\n }\n};\nvar Th = class {\n constructor(e) {\n this.variableNames = [\"x\", \"dy\"], this.outputShape = e.filterShape;\n let t10 = e.strideDepth, o = e.strideHeight, n = e.strideWidth, s = e.padInfo.front, a = e.padInfo.top, i = e.padInfo.left;\n this.userCode = `\n void main() {\n ivec5 coords = getOutputCoords();\n int wF = coords.x;\n int wR = coords.y;\n int wC = coords.z;\n int d1 = coords.w;\n int d2 = coords.u;\n\n float dotProd = 0.0;\n\n for (int b = 0; b < ${e.batchSize}; b++) {\n for (int yF = 0; yF < ${e.outDepth}; yF++) {\n int xF = wF + yF * ${t10} - ${s};\n\n if (xF < 0 || xF >= ${e.inDepth}) {\n continue;\n }\n\n for (int yR = 0; yR < ${e.outHeight}; yR++) {\n int xR = wR + yR * ${o} - ${a};\n\n if (xR < 0 || xR >= ${e.inHeight}) {\n continue;\n }\n\n for (int yC = 0; yC < ${e.outWidth}; yC++) {\n int xC = wC + yC * ${n} - ${i};\n\n if (xC < 0 || xC >= ${e.inWidth}) {\n continue;\n }\n\n float dyValue = getDy(b, yF, yR, yC, d2);\n float xValue = getX(b, xF, xR, xC, d1);\n dotProd += (xValue * dyValue);\n }\n }\n }\n }\n setOutput(dotProd);\n }\n `;\n }\n};\nvar _h = class {\n constructor(e) {\n this.variableNames = [\"dy\", \"W\"], this.outputShape = e.inShape;\n let t10 = e.filterDepth, o = e.filterHeight, n = e.filterWidth, s = e.strideDepth, a = e.strideHeight, i = e.strideWidth, p = t10 - 1 - e.padInfo.front, u = o - 1 - e.padInfo.top, c = n - 1 - e.padInfo.left;\n this.userCode = `\n const ivec3 pads = ivec3(${p}, ${u}, ${c});\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int d1 = coords.u;\n\n\n ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n int dyFCorner = dyCorner.x;\n int dyRCorner = dyCorner.y;\n int dyCCorner = dyCorner.z;\n\n float dotProd = 0.0;\n for (int wF = 0; wF < ${t10}; wF++) {\n float dyF = float(dyFCorner + wF) / ${s}.0;\n\n if (dyF < 0.0 || dyF >= ${e.outDepth}.0 || fract(dyF) > 0.0) {\n continue;\n }\n int idyF = int(dyF);\n\n int wFPerm = ${t10} - 1 - wF;\n\n for (int wR = 0; wR < ${o}; wR++) {\n float dyR = float(dyRCorner + wR) / ${a}.0;\n\n if (dyR < 0.0 || dyR >= ${e.outHeight}.0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = ${o} - 1 - wR;\n\n for (int wC = 0; wC < ${n}; wC++) {\n float dyC = float(dyCCorner + wC) / ${i}.0;\n\n if (dyC < 0.0 || dyC >= ${e.outWidth}.0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = ${n} - 1 - wC;\n\n for (int d2 = 0; d2 < ${e.outChannels}; d2++) {\n float xValue = getDy(batch, idyF, idyR, idyC, d2);\n float wValue = getW(wFPerm, wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n }\n }\n }\n }\n setOutput(dotProd);\n }\n `;\n }\n};\nfunction YY(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, dy: s } = e, { strides: a, pad: i, dataFormat: p, dimRoundingMode: u, filterShape: c } = o, l = S.convertConv2DDataFormat(p), m = S.computeConv2DInfo(n.shape, c, a, 1, i, u, false, l), d = new kh(m);\n return t10.runWebGLProgram(d, [n, s], \"float32\");\n}\nvar UA = { kernelName: oi, backendName: \"webgl\", kernelFunc: YY };\nfunction QY(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { dy: n, filter: s } = e, { inputShape: a, strides: i, pad: p, dataFormat: u, dimRoundingMode: c } = o, l = S.convertConv2DDataFormat(u), m = S.computeConv2DInfo(a, s.shape, i, 1, p, c, false, l), d = new Nh(m);\n return t10.runWebGLProgram(d, [n, s], \"float32\");\n}\nvar GA = { kernelName: Go, backendName: \"webgl\", kernelFunc: QY };\nfunction ZY(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, filter: s } = e, { strides: a, pad: i, dilations: p } = o, u = S.computeConv3DInfo(n.shape, s.shape, a, p, i), c = new Ch(u);\n return t10.runWebGLProgram(c, [n, s], \"float32\");\n}\nvar HA = { kernelName: gp, backendName: \"webgl\", kernelFunc: ZY };\nfunction JY(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, dy: s } = e, { strides: a, pad: i, filterShape: p } = o, u = S.computeConv3DInfo(n.shape, p, a, 1, i), c = new Th(u);\n return t10.runWebGLProgram(c, [n, s], \"float32\");\n}\nvar KA = { kernelName: km, backendName: \"webgl\", kernelFunc: JY };\nfunction eQ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { dy: n, filter: s } = e, { pad: a, strides: i, inputShape: p } = o, u = S.computeConv3DInfo(p, s.shape, i, 1, a), c = new _h(u);\n return t10.runWebGLProgram(c, [n, s], \"float32\");\n}\nvar qA = { kernelName: xp, backendName: \"webgl\", kernelFunc: eQ };\nvar tQ = $o + `\n return cos(x);\n`;\nvar rQ = he({ opSnippet: tQ });\nvar jA = { kernelName: Ho, backendName: \"webgl\", kernelFunc: rQ };\nvar oQ = `\n float e2x = exp(-x);\n return (e2x + 1.0 / e2x) / 2.0;\n`;\nvar nQ = he({ opSnippet: oQ });\nvar XA = { kernelName: Ko, backendName: \"webgl\", kernelFunc: nQ };\nvar $h = class {\n constructor(e, t10, o, n, s) {\n this.variableNames = [\"Image\", \"Boxes\", \"BoxInd\"], this.outputShape = [];\n let [a, i, p, u] = e, [c] = t10, [l, m] = o;\n this.outputShape = [c, l, m, u];\n let d = n === \"bilinear\" ? 1 : 0, [f, h] = [`${i - 1}.0`, `${p - 1}.0`], [g, x, b] = l > 1 ? [`${(i - 1) / (l - 1)}`, \"(y2-y1) * height_ratio\", `y1*${f} + float(y)*(height_scale)`] : [\"0.0\", \"0.0\", `0.5 * (y1+y2) * ${f}`], [C, w, k] = m > 1 ? [`${(p - 1) / (m - 1)}`, \"(x2-x1) * width_ratio\", `x1*${h} + float(x)*(width_scale)`] : [\"0.0\", \"0.0\", `0.5 * (x1+x2) * ${h}`];\n this.userCode = `\n const float height_ratio = float(${g});\n const float width_ratio = float(${C});\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int y = coords[1];\n int x = coords[2];\n int d = coords[3];\n\n // get box vals\n float y1 = getBoxes(b,0);\n float x1 = getBoxes(b,1);\n float y2 = getBoxes(b,2);\n float x2 = getBoxes(b,3);\n\n // get image in batch index\n int bInd = round(getBoxInd(b));\n if(bInd < 0 || bInd >= ${a}) {\n return;\n }\n\n float height_scale = ${x};\n float width_scale = ${w};\n\n float in_y = ${b};\n if( in_y < 0.0 || in_y > ${f} ) {\n setOutput(float(${s}));\n return;\n }\n float in_x = ${k};\n if( in_x < 0.0 || in_x > ${h} ) {\n setOutput(float(${s}));\n return;\n }\n\n vec2 sourceFracIndexCR = vec2(in_x,in_y);\n if(${d} == 1) {\n // Compute the four integer indices.\n ivec2 sourceFloorCR = ivec2(sourceFracIndexCR);\n ivec2 sourceCeilCR = ivec2(ceil(sourceFracIndexCR));\n\n float topLeft = getImage(b, sourceFloorCR.y, sourceFloorCR.x, d);\n float bottomLeft = getImage(b, sourceCeilCR.y, sourceFloorCR.x, d);\n float topRight = getImage(b, sourceFloorCR.y, sourceCeilCR.x, d);\n float bottomRight = getImage(b, sourceCeilCR.y, sourceCeilCR.x, d);\n\n vec2 fracCR = sourceFracIndexCR - vec2(sourceFloorCR);\n\n float top = topLeft + (topRight - topLeft) * fracCR.x;\n float bottom = bottomLeft + (bottomRight - bottomLeft) * fracCR.x;\n float newValue = top + (bottom - top) * fracCR.y;\n setOutput(newValue);\n } else {\n // Compute the coordinators of nearest neighbor point.\n ivec2 sourceNearestCR = ivec2(floor(\n sourceFracIndexCR + vec2(0.5,0.5)));\n float newValue = getImage(b, sourceNearestCR.y, sourceNearestCR.x, d);\n setOutput(newValue);\n }\n }\n `;\n }\n};\nvar sQ = (r) => {\n let { inputs: e, backend: t10, attrs: o } = r, { image: n, boxes: s, boxInd: a } = e, { cropSize: i, method: p, extrapolationValue: u } = o, c = new $h(n.shape, s.shape, i, p, u);\n return t10.runWebGLProgram(c, [n, s, a], \"float32\");\n};\nvar YA = { kernelName: Xo, backendName: \"webgl\", kernelFunc: sQ };\nvar Uu;\n(function(r) {\n r.Prod = \"*\", r.Sum = \"+\";\n})(Uu || (Uu = {}));\nvar Rl = class {\n constructor(e, t10, o, n) {\n this.op = e, this.outputShape = t10, this.variableNames = [\"x\"], this.customUniforms = [{ name: \"index\", type: \"float\" }];\n let s = this.outputShape.length, a = this.op === Uu.Prod ? \"1.0\" : \"0.0\", i = o ? a : `getX(${QA(s, \"coords\", this.op)})`, p = this.outputShape[this.outputShape.length - 1], u = \"\", c = \"\";\n o ? (u = n ? `end != ${p - 1}` : \"end != 0\", c = n ? \"end + 1\" : \"end - 1\") : (u = n ? `end + pow2 < ${p}` : \"end >= pow2\", c = n ? \"end + pow2\" : \"end - pow2\"), this.userCode = `\n void main() {\n ${$e(s)} coords = getOutputCoords();\n int end = ${ZA(s, \"coords\", this.op)};\n float val = ${i};\n int pow2 = int(pow(2.0, index));\n if (${u}) {\n int idx = ${c};\n ${ZA(s, \"coords\", this.op)} = idx;\n val ${this.op}= getX(${QA(s, \"coords\", this.op)});\n }\n setOutput(val);\n }\n `;\n }\n};\nfunction QA(r, e, t10) {\n if (r === 1)\n return `${e}`;\n if (r === 2)\n return `${e}.x, ${e}.y`;\n if (r === 3)\n return `${e}.x, ${e}.y, ${e}.z`;\n if (r === 4)\n return `${e}.x, ${e}.y, ${e}.z, ${e}.w`;\n throw new Error(`Cumulative ${t10} for rank ${r} is not yet supported`);\n}\nfunction ZA(r, e, t10) {\n if (r === 1)\n return `${e}`;\n if (r === 2)\n return `${e}.y`;\n if (r === 3)\n return `${e}.z`;\n if (r === 4)\n return `${e}.w`;\n throw new Error(`Cumulative ${t10} for rank ${r} is not yet supported`);\n}\nfunction Eh(r, e, t10, o, n, s) {\n let a = e.shape.length, i = S.getAxesPermutation([o], a), p = e;\n i != null && (p = yt({ inputs: { x: e }, backend: t10, attrs: { perm: i } }));\n let u = S.getInnerMostAxes(1, a)[0];\n if (u !== a - 1)\n throw new Error(`WebGL cumprod shader expects an inner-most axis=${e.shape.length - 1} but got axis=${o}`);\n let c = p.shape[u], l = At({ inputs: { x: p }, backend: t10 });\n for (let m = 0; m <= Math.ceil(Math.log2(c)) - 1; m++) {\n let d = new Rl(r, p.shape, false, s), f = [[m]], h = l;\n l = t10.runWebGLProgram(d, [l], l.dtype, f), t10.disposeIntermediateTensorInfo(h);\n }\n if (n) {\n let m = new Rl(r, p.shape, n, s), d = l;\n l = t10.runWebGLProgram(m, [l], l.dtype), t10.disposeIntermediateTensorInfo(d);\n }\n if (i != null) {\n let m = S.getUndoAxesPermutation(i), d = yt({ inputs: { x: l }, backend: t10, attrs: { perm: m } });\n return t10.disposeIntermediateTensorInfo(l), t10.disposeIntermediateTensorInfo(p), d;\n }\n return l;\n}\nfunction aQ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s, exclusive: a, reverse: i } = o;\n return Eh(Uu.Prod, n, t10, s, a, i);\n}\nvar JA = { kernelName: qo, backendName: \"webgl\", kernelFunc: aQ };\nfunction iQ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s, exclusive: a, reverse: i } = o;\n return Eh(Uu.Sum, n, t10, s, a, i);\n}\nvar eR = { kernelName: jo, backendName: \"webgl\", kernelFunc: iQ };\nfunction uQ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, weights: s } = e, { size: a, binaryOutput: i } = o;\n if (n.shape.length === 1) {\n let p = t10.readSync(n.dataId), u = t10.readSync(s.dataId), c = Kf(p, u, s.dtype, s.shape, a);\n return t10.makeTensorInfo([a], s.dtype, c);\n } else if (n.shape.length === 2) {\n let p = t10.bufferSync(n), u = t10.bufferSync(s), c = z$(p, u, a, i);\n return t10.makeTensorInfo(c.shape, s.dtype, c.values);\n }\n throw new Error(`Error in denseBincount: input must be at most rank 2, but got rank${n.shape.length}.`);\n}\nvar tR = { kernelName: ni, backendName: \"webgl\", kernelFunc: uQ };\nvar Ah = class {\n constructor(e, t10, o) {\n this.variableNames = [\"x\"], this.outputShape = [], this.outputShape = e, this.blockSize = t10, this.dataFormat = o, this.userCode = `\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int h = ${this.getHeightCoordString()};\n int w = ${this.getWidthCoordString()};\n int d = ${this.getDepthCoordString()};\n\n int in_h = h / ${t10};\n int offset_h = imod(h, ${t10});\n int in_w = w / ${t10};\n int offset_w = imod(w, ${t10});\n int offset_d = (offset_h * ${t10} + offset_w) *\n ${this.getOutputDepthSize()};\n int in_d = d + offset_d;\n\n float result = ${this.getInputSamplingString()};\n setOutput(result);\n }\n `;\n }\n getHeightCoordString() {\n return this.dataFormat === \"NHWC\" ? \"coords[1]\" : \"coords[2]\";\n }\n getWidthCoordString() {\n return this.dataFormat === \"NHWC\" ? \"coords[2]\" : \"coords[3]\";\n }\n getDepthCoordString() {\n return this.dataFormat === \"NHWC\" ? \"coords[3]\" : \"coords[1]\";\n }\n getOutputDepthSize() {\n return this.dataFormat === \"NHWC\" ? this.outputShape[3] : this.outputShape[1];\n }\n getInputSamplingString() {\n return this.dataFormat === \"NHWC\" ? \"getX(b, in_h, in_w, in_d)\" : \"getX(b, in_d, in_h, in_w)\";\n }\n};\nfunction pQ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { blockSize: s, dataFormat: a } = o, i = n.shape[0], p = a === \"NHWC\" ? n.shape[1] : n.shape[2], u = a === \"NHWC\" ? n.shape[2] : n.shape[3], c = a === \"NHWC\" ? n.shape[3] : n.shape[1], l = p * s, m = u * s, d = c / (s * s), f = a === \"NHWC\" ? [i, l, m, d] : [i, d, l, m], h = new Ah(f, s, a);\n return t10.runWebGLProgram(h, [n], n.dtype);\n}\nvar rR = { kernelName: Yo, backendName: \"webgl\", kernelFunc: pQ };\nvar yc = class {\n constructor(e, t10 = false, o = null, n = false, s = false) {\n this.variableNames = [\"x\", \"W\"], this.customUniforms = [{ name: \"pads\", type: \"ivec2\" }, { name: \"strides\", type: \"ivec2\" }, { name: \"dilations\", type: \"ivec2\" }, { name: \"inDims\", type: \"ivec2\" }], this.outputShape = e.outShape, this.enableShapeUniforms = lt(this.outputShape.length);\n let a = e.filterHeight, i = e.filterWidth, p = e.outChannels / e.inChannels, u = \"\", c = \"\";\n o && (n ? u = `float activation(float a) {\n float b = getPreluActivationWeightsAtOutCoords();\n ${o}\n }` : s ? u = `float activation(float a) {\n float b = getLeakyreluAlphaAtOutCoords();\n ${o}\n }` : u = `\n float activation(float x) {\n ${o}\n }\n `, c = \"result = activation(result);\");\n let l = t10 ? \"result += getBiasAtOutCoords();\" : \"\";\n t10 && this.variableNames.push(\"bias\"), n && this.variableNames.push(\"preluActivationWeights\"), s && this.variableNames.push(\"leakyreluAlpha\"), this.userCode = `\n ${u}\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords.x;\n ivec2 xRCCorner = coords.yz * strides - pads;\n int d2 = coords.w;\n int d1 = d2 / ${p};\n int q = d2 - d1 * ${p};\n\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // Convolve x(?, ?, d1) with w(:, :, d1, q) to get y(yR, yC, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n // TO DO(dsmilkov): Flatten the two for loops and vec4 the operations.\n for (int wR = 0; wR < ${a}; wR++) {\n int xR = xRCorner + wR * dilations[0];\n\n if (xR < 0 || xR >= inDims[0]) {\n continue;\n }\n\n for (int wC = 0; wC < ${i}; wC++) {\n int xC = xCCorner + wC * dilations[1];\n\n if (xC < 0 || xC >= inDims[1]) {\n continue;\n }\n\n float xVal = getX(batch, xR, xC, d1);\n float wVal = getW(wR, wC, d1, q);\n dotProd += xVal * wVal;\n }\n }\n\n float result = dotProd;\n ${l}\n ${c}\n setOutput(result);\n }\n `;\n }\n};\nvar bc = class {\n constructor(e, t10 = false, o = null, n = false, s = false) {\n this.variableNames = [\"x\", \"W\"], this.packedInputs = true, this.packedOutput = true, this.customUniforms = [{ name: \"pads\", type: \"ivec2\" }, { name: \"strides\", type: \"ivec2\" }, { name: \"dilations\", type: \"ivec2\" }, { name: \"inDims\", type: \"ivec2\" }], this.outputShape = e.outShape, this.enableShapeUniforms = lt(this.outputShape.length);\n let a = e.outChannels / e.inChannels, i = e.padInfo.left, p = e.strideWidth, u = e.dilationWidth, c = e.filterHeight, l = e.filterWidth, m = l, d = `\n int xR; int xC; int xCOffset;\n vec4 wTexel; vec4 previous; vec4 final;`;\n for (let x = 0; x < l; x++)\n d += `\n vec4 xTexelC${x * 2};\n int xTexelC${x * 2}Ready;\n vec4 xTexelC${x * 2 + 1};\n int xTexelC${x * 2 + 1}Ready;\n vec4 xC${x};`;\n d += `\n for (int r = 0; r < ${c}; r++) {\n `;\n for (let x = 0; x < l; x++)\n d += `\n xTexelC${x * 2} = vec4(0.0);\n xTexelC${x * 2}Ready = 0;\n xTexelC${x * 2 + 1} = vec4(0.0);\n xTexelC${x * 2 + 1}Ready = 0;\n xC${x} = vec4(0.0);`;\n d += `\n xR = xRCorner + r * dilations[0];\n if (xR >=0 && xR < inDims[0]) {\n `;\n for (let x = 0; x < (m + 1) / 2; x++) {\n let b = x * 2;\n if (d += `\n xC = xCCorner + ${b * u};\n `, p === 1) {\n if (b < l && (i % 2 === 1 ? (d += `\n xCOffset = xC + 1;\n if (xCOffset >= 0 && xCOffset < inDims[1] && xTexelC${b}Ready == 0) {\n xTexelC${b} = getX(batch, xR, xCOffset, d1);\n\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC${b}.zw = vec2(0.0);\n }\n xTexelC${b}Ready = 1;\n }\n `, u === 1 && b > 0 ? d += `\n xC${b} = vec4(xTexelC${b - 2}.zw, xTexelC${b}.xy);\n ` : d += `\n xCOffset = xC + 1 - 2;\n\n if (xCOffset >= 0 && xCOffset < inDims[1]) {\n previous = getX(batch, xR, xCOffset, d1);\n\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n previous.zw = vec2(0.0);\n }\n\n xC${b} = vec4(previous.zw, xTexelC${b}.xy);\n } else {\n xC${b} = vec4(0.0, 0.0, xTexelC${b}.xy);\n }\n `) : d += `\n if (xC >= 0 && xC < inDims[1] && xTexelC${b}Ready == 0) {\n xTexelC${b} = getX(batch, xR, xC, d1);\n if (xC + 1 >= inDims[1]) {\n xTexelC${b}.zw = vec2(0.0);\n }\n xTexelC${b}Ready = 1;\n }\n\n xC${b} = xTexelC${b};\n `, b + 1 < l)) {\n let C = i % 2 === 0 ? y.nearestLargerEven(u) : u;\n u % 2 === 0 && i % 2 === 1 || u % 2 !== 0 && i % 2 !== 1 ? (d += `\n xCOffset = xC + imod(pads[1], 2) + ${C};\n\n if (xCOffset >= 0 && xCOffset < inDims[1] && xTexelC${b + 1}Ready == 0) {\n xTexelC${b + 1} = getX(batch, xR, xCOffset, d1);\n\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC${b + 1}.zw = vec2(0.0);\n }\n xTexelC${b + 1}Ready = 1;\n }\n `, u > 1 ? d += `\n xCOffset -= 2;\n if (xCOffset >= 0 && xCOffset < inDims[1]) {\n previous = getX(batch, xR, xCOffset, d1);\n xC${b + 1} = vec4(previous.zw, xTexelC${b + 1}.xy);\n } else {\n xC${b + 1} = vec4(0.0, 0.0, xTexelC${b + 1}.xy);\n }\n ` : d += `\n xC${b + 1} = vec4(xTexelC${b}.zw, xTexelC${b + 1}.xy);\n `) : C === 1 ? d += `\n xC${b + 1} = xTexelC${b};\n ` : d += `\n xCOffset = xC + ${C};\n\n if (xCOffset >= 0 && xCOffset < inDims[1] && xTexelC${b + 1}Ready == 0) {\n xTexelC${b + 1} = getX(batch, xR, xCOffset, d1);\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC${b + 1}.zw = vec2(0.0);\n }\n xTexelC${b + 1}Ready = 1;\n }\n\n xC${b + 1} = xTexelC${b + 1};\n `;\n }\n } else\n b < l && (i % 2 === 1 ? (d += `\n xCOffset = xC + 1 - strides[1];\n if(xCOffset >= 0 && xCOffset < inDims[1] && xTexelC${b}Ready == 0) {\n xTexelC${b} = getX(batch, xR, xCOffset, d1);\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC${b}.zw = vec2(0.0);\n }\n xTexelC${b}Ready = 1;\n }\n\n if(xC + 1 >= 0 && xC + 1 < inDims[1] && xTexelC${b + 1}Ready == 0) {\n xTexelC${b + 1} = getX(batch, xR, xC + 1, d1);\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xC + 2 >= inDims[1]) {\n xTexelC${b + 1}.zw = vec2(0.0);\n }\n xTexelC${b + 1}Ready = 1;\n }\n\n xC${b} = vec4(xTexelC${b}.zw, xTexelC${b + 1}.zw);\n `, b + 1 < l && (d += `\n final = vec4(0.0);\n xCOffset = xC + 1 + strides[1];\n if(xCOffset >= 0 && xCOffset < inDims[1]) {\n final = getX(batch, xR, xCOffset, d1);\n }\n xC${b + 1} = vec4(xTexelC${b + 1}.xy, final.xy);\n `)) : (d += `\n if(xC >= 0 && xC < inDims[1] && xTexelC${b}Ready == 0) {\n xTexelC${b} = getX(batch, xR, xC, d1);\n if (xC + 1 >= inDims[1]) {\n xTexelC${b}.zw = vec2(0.0);\n }\n xTexelC${b}Ready = 1;\n }\n\n xCOffset = xC + strides[1];\n if(xCOffset >= 0 && xCOffset < inDims[1] && xTexelC${b + 1}Ready == 0) {\n xTexelC${b + 1} = getX(batch, xR, xCOffset, d1);\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC${b + 1}.zw = vec2(0.);\n }\n xTexelC${b + 1}Ready = 1;\n }\n\n xC${b} = vec4(\n xTexelC${b}.xy, xTexelC${b + 1}.xy);\n `, b + 1 < l && (d += `\n xC${b + 1} = vec4(xTexelC${b}.zw, xTexelC${b + 1}.zw);\n `)));\n b < l && (d += `\n wTexel = getW(r, ${b}, d1, q);\n dotProd += xC${b} * vec4(wTexel.xz, wTexel.xz);\n `, b + 1 < l && (d += `\n wTexel = getW(r, ${b + 1}, d1, q);\n dotProd += xC${b + 1} * vec4(wTexel.xz, wTexel.xz);\n `));\n }\n d += `\n }\n `, d += `\n }\n `;\n let f = \"\", h = \"\";\n o && (n ? f = `vec4 activation(vec4 a) {\n vec4 b = getPreluActivationWeightsAtOutCoords();\n ${o}\n }` : s ? f = `vec4 activation(vec4 a) {\n vec4 b = getLeakyreluAlphaAtOutCoords();\n ${o}\n }` : f = `vec4 activation(vec4 x) {\n ${o}\n }`, h = \"result = activation(result);\");\n let g = t10 ? \"result += getBiasAtOutCoords();\" : \"\";\n t10 && this.variableNames.push(\"bias\"), n && this.variableNames.push(\"preluActivationWeights\"), s && this.variableNames.push(\"leakyreluAlpha\"), this.userCode = `\n ${f}\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords.x;\n ivec2 xRCCorner = coords.yz * strides - pads;\n int d2 = coords.w;\n int d1 = d2 / ${a};\n int q = d2 - d1 * ${a};\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n //intialize dotProd with a small epsilon seems to reduce GPU accuracy loss.\n vec4 dotProd = vec4(0.000000000000001);\n\n ${d}\n\n vec4 result = dotProd - vec4(0.000000000000001);\n ${g}\n ${h}\n setOutput(result);\n }\n `;\n }\n};\nfunction cQ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, filter: s } = e, { strides: a, pad: i, dilations: p, dimRoundingMode: u } = o, c = p;\n c == null && (c = [1, 1]), y.assert(S.eitherStridesOrDilationsAreOne(a, c), () => `Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${a} and dilations '${c}'`);\n let l = S.computeConv2DInfo(n.shape, s.shape, a, c, i, u, true), m;\n O().getBool(\"WEBGL_PACK_DEPTHWISECONV\") && l.strideWidth <= 2 && l.outChannels / l.inChannels === 1 ? m = new bc(l) : m = new yc(l);\n let d = [[l.padInfo.top, l.padInfo.left], [l.strideHeight, l.strideWidth], [l.dilationHeight, l.dilationWidth], [l.inHeight, l.inWidth]];\n return t10.runWebGLProgram(m, [n, s], \"float32\", d);\n}\nvar oR = { kernelName: Qo, backendName: \"webgl\", kernelFunc: cQ };\nvar Rh = class {\n constructor(e) {\n this.variableNames = [\"x\", \"dy\"], this.outputShape = e.filterShape;\n let t10 = e.strideHeight, o = e.strideWidth, n = e.padInfo.top, s = e.padInfo.left, a = e.outChannels / e.inChannels;\n this.userCode = `\n void main() {\n ivec4 coords = getOutputCoords();\n int wR = coords.x;\n int wC = coords.y;\n int d1 = coords.z;\n int dm = coords.w;\n int d2 = d1 * ${a} + dm;\n\n float dotProd = 0.0;\n\n // TO DO: Vec4 over the batch size\n for (int b = 0; b < ${e.batchSize}; b++) {\n for (int yR = 0; yR < ${e.outHeight}; yR++) {\n int xR = wR + yR * ${t10} - ${n};\n\n if (xR < 0 || xR >= ${e.inHeight}) {\n continue;\n }\n\n for (int yC = 0; yC < ${e.outWidth}; yC++) {\n int xC = wC + yC * ${o} - ${s};\n\n if (xC < 0 || xC >= ${e.inWidth}) {\n continue;\n }\n\n float dyValue = getDy(b, yR, yC, d2);\n float xValue = getX(b, xR, xC, d1);\n dotProd += (xValue * dyValue);\n }\n }\n }\n setOutput(dotProd);\n }\n `;\n }\n};\nvar Dh = class {\n constructor(e) {\n this.variableNames = [\"dy\", \"W\"], this.outputShape = e.inShape;\n let t10 = e.filterHeight, o = e.filterWidth, n = e.strideHeight, s = e.strideWidth, a = t10 - 1 - e.padInfo.top, i = o - 1 - e.padInfo.left, p = e.outChannels / e.inChannels;\n this.userCode = `\n const ivec2 pads = ivec2(${a}, ${i});\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords[3];\n ivec2 dyCorner = coords.yz - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n float dotProd = 0.0;\n\n for (int wR = 0; wR < ${t10}; wR++) {\n float dyR = float(dyRCorner + wR) / ${n}.0;\n\n if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = ${t10} - 1 - wR;\n\n for (int wC = 0; wC < ${o}; wC++) {\n float dyC = float(dyCCorner + wC) / ${s}.0;\n\n if (dyC < 0.0 || dyC >= ${e.outWidth}.0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = ${o} - 1 - wC;\n\n // TO DO: Vec4 over the channelMul\n for (int dm = 0; dm < ${p}; dm++) {\n int d2 = d1 * ${p} + dm;\n float xValue = getDy(batch, idyR, idyC, d2);\n float wValue = getW(wRPerm, wCPerm, d1, dm);\n dotProd += xValue * wValue;\n }\n }\n }\n setOutput(dotProd);\n }\n `;\n }\n};\nfunction lQ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, dy: s } = e, { strides: a, dilations: i, pad: p, dimRoundingMode: u, filterShape: c } = o, l = S.computeConv2DInfo(n.shape, c, a, i, p, u, true), m = new Rh(l);\n return t10.runWebGLProgram(m, [n, s], \"float32\");\n}\nvar nR = { kernelName: yp, backendName: \"webgl\", kernelFunc: lQ };\nfunction mQ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { dy: n, filter: s } = e, { strides: a, dilations: i, pad: p, dimRoundingMode: u, inputShape: c } = o, l = S.computeConv2DInfo(c, s.shape, a, i, p, u, true), m = new Dh(l);\n return t10.runWebGLProgram(m, [n, s], \"float32\");\n}\nvar sR = { kernelName: bp, backendName: \"webgl\", kernelFunc: mQ };\nvar Fh = class {\n constructor(e) {\n this.variableNames = [\"X\"], this.outputShape = [e, e], this.userCode = `\n void main() {\n ivec2 coords = getOutputCoords();\n float val = coords[0] == coords[1] ? getX(coords[0]) : 0.0;\n setOutput(val);\n }\n `;\n }\n};\nfunction dQ(r) {\n let { inputs: e, backend: t10 } = r, { x: o } = e, n = [...o.shape, ...o.shape], s = y.sizeFromShape(o.shape), a = re({ inputs: { x: o }, backend: t10, attrs: { shape: [s] } }), i = new Fh(s), p = t10.runWebGLProgram(i, [a], a.dtype), u = re({ inputs: { x: p }, backend: t10, attrs: { shape: n } });\n return t10.disposeIntermediateTensorInfo(a), t10.disposeIntermediateTensorInfo(p), u;\n}\nvar aR = { kernelName: si, backendName: \"webgl\", kernelFunc: dQ };\nvar Oh = class {\n constructor(e) {\n this.variableNames = [\"x\", \"W\"], this.outputShape = e.outShape;\n let { inHeight: t10, inWidth: o, padInfo: n, strideHeight: s, strideWidth: a, filterHeight: i, filterWidth: p, dilationHeight: u, dilationWidth: c } = e, { top: l, left: m } = n;\n this.userCode = `\n const ivec2 strides = ivec2(${s}, ${a});\n const ivec2 pads = ivec2(${l}, ${m});\n const float neg_infinity = -3.4e38;\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords.x;\n int d1 = coords.w;\n ivec2 outTopLeftCorner =\n coords.yz * strides - pads;\n int hBeg = outTopLeftCorner.x;\n int wBeg = outTopLeftCorner.y;\n\n float curVal = neg_infinity;\n for (int h = 0; h < ${i}; h++) {\n int hIn = hBeg + h * ${u};\n\n if (hIn >= 0 && hIn < ${t10}) {\n for (int w = 0; w < ${p}; w++) {\n int wIn = wBeg + w * ${c};\n\n if (wIn >= 0 && wIn < ${o}) {\n float xVal = getX(batch, hIn, wIn, d1);\n float wVal = getW(h, w, d1);\n\n float val = xVal + wVal;\n if (val > curVal) {\n curVal = val;\n }\n }\n }\n }\n }\n\n float result = curVal;\n setOutput(result);\n }\n `;\n }\n};\nfunction fQ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, filter: s } = e, { strides: a, pad: i, dilations: p } = o, u = S.computeDilation2DInfo(n.shape, s.shape, a, i, \"NHWC\", p), c, l = new Oh(u);\n c = t10.runWebGLProgram(l, [n, s], \"float32\");\n let m = re({ inputs: { x: c }, backend: t10, attrs: { shape: u.outShape } });\n return t10.disposeIntermediateTensorInfo(c), m;\n}\nvar iR = { kernelName: ai, backendName: \"webgl\", kernelFunc: fQ };\nfunction hQ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { equation: n } = o, s = e, { allDims: a, summedDims: i, idDims: p } = S.decodeEinsumEquation(n, s.length);\n S.checkEinsumDimSizes(a.length, p, s);\n let { path: u, steps: c } = S.getEinsumComputePath(i, p), l = c.length, m = null, d = a.length, f = [];\n for (let h = 0; h < l; ++h) {\n for (let g of c[h]) {\n let { permutationIndices: x, expandDims: b } = S.getEinsumPermutation(d, p[g]), C;\n S.isIdentityPermutation(x) ? C = s[g] : (C = yt({ inputs: { x: s[g] }, backend: t10, attrs: { perm: x } }), f.push(C));\n let w = C.shape.slice();\n for (let k = 0; k < b.length; ++k)\n w.splice(b[k], 0, 1);\n y.arraysEqual(C.shape, w) || (C = re({ inputs: { x: C }, backend: t10, attrs: { shape: w } }), f.push(C)), m === null ? m = C : (m = El({ inputs: { a: C, b: m }, backend: t10 }), f.push(m));\n }\n h < l - 1 && (u[h] >= 0 && (m = Vu({ inputs: { x: m }, backend: t10, attrs: { axis: u[h] - (a.length - d), keepDims: false } }), f.push(m)), d--);\n }\n for (let h of f)\n h !== m && t10.disposeIntermediateTensorInfo(h);\n return m;\n}\nvar uR = { kernelName: ii, backendName: \"webgl\", kernelFunc: hQ };\nvar gQ = \"return (x >= 0.0) ? x : (exp(x) - 1.0);\";\nvar xQ = `\n vec4 result;\n\n result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0);\n result.g = (x.g >= 0.0) ? x.g : (exp(x.g) - 1.0);\n result.b = (x.b >= 0.0) ? x.b : (exp(x.b) - 1.0);\n result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0);\n\n return result;\n`;\nvar yQ = he({ opSnippet: gQ, packedOpSnippet: xQ });\nvar pR = { kernelName: Jo, backendName: \"webgl\", kernelFunc: yQ };\nvar bQ = \"return (b >= 1.0) ? a : a * (b + 1.0);\";\nvar CQ = `\n vec4 bGTEZero = vec4(greaterThanEqual(b, vec4(0.)));\n return (bGTEZero * a) + ((vec4(1.0) - bGTEZero) * (a * (b + vec4(1.0))));\n`;\nvar SQ = (r) => {\n let { inputs: e, backend: t10 } = r, { dy: o, y: n } = e, s = O().getBool(\"WEBGL_PACK_BINARY_OPERATIONS\") ? new _o(CQ, o.shape, n.shape) : new io(bQ, o.shape, n.shape);\n return t10.runWebGLProgram(s, [o, n], o.dtype);\n};\nvar cR = { kernelName: Nm, backendName: \"webgl\", kernelFunc: SQ };\nvar wQ = `\n return vec4(equal(a, b));\n`;\nvar IQ = \"return float(a == b);\";\nvar vQ = tt({ opSnippet: IQ, packedOpSnippet: wQ, dtype: \"bool\", cpuKernelImpl: H$ });\nvar lR = { kernelName: en, backendName: \"webgl\", kernelFunc: vQ };\nvar kQ = `\n // Error function is calculated approximately with elementary function.\n // See \"Handbook of Mathematical Functions with Formulas,\n // Graphs, and Mathematical Tables\", Abramowitz and Stegun.\n float p = ${S.ERF_P};\n float a1 = ${S.ERF_A1};\n float a2 = ${S.ERF_A2};\n float a3 = ${S.ERF_A3};\n float a4 = ${S.ERF_A4};\n float a5 = ${S.ERF_A5};\n\n float sign = sign(x);\n x = abs(x);\n float t = 1.0 / (1.0 + p * x);\n return sign * (1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x));\n`;\nvar NQ = he({ opSnippet: kQ });\nvar mR = { kernelName: da, backendName: \"webgl\", kernelFunc: NQ };\nvar TQ = $o + `\n return exp(x);\n`;\nvar _Q = `\n vec4 result = exp(x);\n bvec4 isNaN = isnan(x);\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n`;\nvar Ww = he({ opSnippet: TQ, packedOpSnippet: _Q, cpuKernelImpl: K$, dtype: \"float32\" });\nvar dR = { kernelName: tn, backendName: \"webgl\", kernelFunc: Ww };\nfunction Ph(r) {\n let { inputs: e, attrs: t10, backend: o } = r, { dim: n } = t10, { input: s } = e, a = s.shape.length, i = s.shape.slice(), p = n;\n return n < 0 && (y.assert(-(a + 1) <= n, () => `Axis must be in the interval [${-(a + 1)}, ${a}]`), p = a + n + 1), i.splice(p, 0, 1), re({ inputs: { x: s }, backend: o, attrs: { shape: i } });\n}\nvar fR = { kernelName: Ss, backendName: \"webgl\", kernelFunc: Ph };\nvar hR = \"return exp(x) - 1.0;\";\nvar $Q = he({ opSnippet: hR, packedOpSnippet: hR, cpuKernelImpl: q$ });\nvar gR = { kernelName: fa, backendName: \"webgl\", kernelFunc: $Q };\nvar Dl = class {\n constructor(e, t10, o) {\n this.variableNames = [\"real\", \"imag\"];\n let n = t10[1];\n this.outputShape = t10;\n let s = o ? `2.0 * ${Math.PI}` : `-2.0 * ${Math.PI}`, a = o ? `${n}.0` : \"1.0\", i;\n if (e === \"real\")\n i = \"return real * expR - imag * expI;\";\n else if (e === \"imag\")\n i = \"return real * expI + imag * expR;\";\n else\n throw new Error(`FFT component must be either \"real\" or \"imag\", got ${e}.`);\n this.userCode = `\n const float exponentMultiplier = ${s};\n\n float unaryOpComplex(float real, float expR, float imag, float expI) {\n ${i}\n }\n\n float mulMatDFT(int batch, int index) {\n float indexRatio = float(index) / float(${n});\n float exponentMultiplierTimesIndexRatio =\n exponentMultiplier * indexRatio;\n\n float result = 0.0;\n\n for (int i = 0; i < ${n}; i++) {\n // x = (-2|2 * PI / N) * index * i;\n float x = exponentMultiplierTimesIndexRatio * float(i);\n float expR = cos(x);\n float expI = sin(x);\n float real = getReal(batch, i);\n float imag = getImag(batch, i);\n\n result +=\n unaryOpComplex(real, expR, imag, expI) / ${a};\n }\n\n return result;\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n setOutput(mulMatDFT(coords[0], coords[1]));\n }\n `;\n }\n};\nfunction Mh(r, e, t10) {\n let o = t10.texData.get(r.dataId), n = y.sizeFromShape(r.shape), s = r.shape[r.shape.length - 1], a = n / s, i = re({ inputs: { x: r }, backend: t10, attrs: { shape: [a, s] } }), p = i.shape, u = new Dl(\"real\", p, e), c = new Dl(\"imag\", p, e), l = [{ dataId: o.complexTensorInfos.real.dataId, dtype: o.complexTensorInfos.real.dtype, shape: p }, { dataId: o.complexTensorInfos.imag.dataId, dtype: o.complexTensorInfos.imag.dtype, shape: p }], m = t10.runWebGLProgram(u, l, \"float32\"), d = t10.runWebGLProgram(c, l, \"float32\"), f = Ar({ inputs: { real: m, imag: d }, backend: t10 });\n t10.disposeIntermediateTensorInfo(m), t10.disposeIntermediateTensorInfo(d);\n let h = re({ inputs: { x: f }, backend: t10, attrs: { shape: r.shape } });\n return t10.disposeIntermediateTensorInfo(i), t10.disposeIntermediateTensorInfo(f), h;\n}\nfunction EQ(r) {\n let { inputs: e, backend: t10 } = r, { input: o } = e;\n return Mh(o, false, t10);\n}\nvar xR = { kernelName: ui, backendName: \"webgl\", kernelFunc: EQ };\nvar Lh = class {\n constructor(e, t10) {\n this.outputShape = [], this.customUniforms = [{ name: \"value\", type: \"float\" }], this.variableNames = [\"x\"], this.outputShape = e, this.userCode = `\n void main() {\n // Input can be obtained from uniform value.\n setOutput(value);\n }\n `;\n }\n};\nfunction qa(r) {\n let { backend: e, attrs: t10 } = r, { shape: o, value: n } = t10, { dtype: s } = t10;\n if (s = s || y.inferDtype(n), s === \"string\") {\n let a = y.getArrayFromDType(s, y.sizeFromShape(o));\n return a.fill(n), e.makeTensorInfo(o, s, a);\n } else {\n let a = new Lh(o, n), i = [[n]];\n return e.runWebGLProgram(a, [], s, i);\n }\n}\nvar yR = { kernelName: ws, backendName: \"webgl\", kernelFunc: qa };\nvar Bh = class {\n constructor(e) {\n this.variableNames = [\"Image\"], this.outputShape = [];\n let t10 = e[2];\n this.outputShape = e, this.userCode = `\n void main() {\n ivec4 coords = getOutputCoords();\n int x = coords[2];\n\n int coordX = ${t10} - x - 1;\n float outputValue;\n if(coordX >= 0 && coordX < ${t10}) {\n outputValue = getImage(coords[0], coords[1], coordX, coords[3]);\n } else {\n outputValue = getImage(coords[0], coords[1], coords[2], coords[3]);\n }\n setOutput(outputValue);\n }\n `;\n }\n};\nvar bR = { kernelName: rn, backendName: \"webgl\", kernelFunc: ({ inputs: r, backend: e }) => {\n let { image: t10 } = r, o = e, n = new Bh(t10.shape);\n return o.runWebGLProgram(n, [t10], t10.dtype);\n} };\nvar CR = \"return floor(x);\";\nvar AQ = he({ opSnippet: CR, packedOpSnippet: CR, cpuKernelImpl: j$ });\nvar SR = { kernelName: on, backendName: \"webgl\", kernelFunc: AQ };\nvar RQ = `\n float s = sign(a) * sign(b);\n int ia = round(a);\n int ib = round(b);\n if (ib != 0) {\n // Windows (D3D) wants guaranteed non-zero int division at compile-time.\n return float(idiv(ia, ib, s));\n } else {\n return NAN;\n }\n`;\nvar DQ = `\n ivec4 ia = round(a);\n ivec4 ib = round(b);\n bvec4 cond = notEqual(ib, ivec4(0));\n ivec4 result = ivec4(0);\n vec4 s = sign(a) * sign(b);\n\n // Windows (D3D) wants guaranteed non-zero int division at compile-time.\n if (cond[0]) {\n result[0] = idiv(ia[0], ib[0], s[0]);\n }\n if (cond[1]) {\n result[1] = idiv(ia[1], ib[1], s[1]);\n }\n if (cond[2]) {\n result[2] = idiv(ia[2], ib[2], s[2]);\n }\n if (cond[3]) {\n result[3] = idiv(ia[3], ib[3], s[3]);\n }\n return vec4(result);\n`;\nvar FQ = tt({ opSnippet: RQ, packedOpSnippet: DQ, dtype: \"int32\" });\nvar wR = { kernelName: nn, backendName: \"webgl\", kernelFunc: FQ };\nvar Vh = class {\n constructor(e) {\n this.variableNames = [\"A\"];\n let t10 = wt(), [o, n] = e;\n this.outputShape = e, this.userCode = `\n void main() {\n ivec3 coords = getOutputCoords();\n int texR = coords[0];\n int texC = coords[1];\n int depth = coords[2];\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2(${n}.0, ${o}.0);\n\n vec4 values = ${t10.texture2D}(A, uv);\n float value;\n if (depth == 0) {\n value = values.r;\n } else if (depth == 1) {\n value = values.g;\n } else if (depth == 2) {\n value = values.b;\n } else if (depth == 3) {\n value = values.a;\n }\n\n setOutput(floor(value * 255.0 + 0.5));\n }\n `;\n }\n};\nvar zh = class {\n constructor(e) {\n this.variableNames = [\"A\"], this.packedInputs = false, this.packedOutput = true;\n let t10 = wt(), [o, n] = e;\n this.outputShape = e, this.userCode = `\n void main() {\n ivec3 coords = getOutputCoords();\n int texR = coords[0];\n int texC = coords[1];\n int depth = coords[2];\n\n vec4 result = vec4(0.);\n\n for(int row=0; row<=1; row++) {\n for(int col=0; col<=1; col++) {\n texC = coords[1] + row;\n depth = coords[2] + col;\n\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(${n}.0, ${o}.0);\n vec4 values = ${t10.texture2D}(A, uv);\n float value;\n if (depth == 0) {\n value = values.r;\n } else if (depth == 1) {\n value = values.g;\n } else if (depth == 2) {\n value = values.b;\n } else if (depth == 3) {\n value = values.a;\n }\n\n result[row * 2 + col] = floor(value * 255.0 + 0.5);\n }\n }\n\n ${t10.output} = result;\n }\n `;\n }\n};\nvar IR = { kernelName: Zi, backendName: \"webgl\", kernelFunc: OQ };\nvar Cc;\nvar Uw = O().getBool(\"CANVAS2D_WILL_READ_FREQUENTLY_FOR_GPU\");\nfunction OQ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { pixels: n } = e, { numChannels: s } = o, a = typeof HTMLVideoElement != \"undefined\" && n instanceof HTMLVideoElement, i = typeof HTMLImageElement != \"undefined\" && n instanceof HTMLImageElement, [p, u] = a ? [n.videoWidth, n.videoHeight] : [n.width, n.height], c = [u, p], l = [u, p, s];\n if (i || a) {\n let h = O().getBool(\"CANVAS2D_WILL_READ_FREQUENTLY_FOR_GPU\");\n (Cc == null || h !== Uw) && (Uw = h, Cc = document.createElement(\"canvas\").getContext(\"2d\", { willReadFrequently: Uw })), Cc.canvas.width = p, Cc.canvas.height = u, Cc.drawImage(n, 0, 0, p, u), n = Cc.canvas;\n }\n let m = t10.makeTensorInfo(c, \"int32\");\n t10.texData.get(m.dataId).usage = ur.PIXELS, t10.gpgpu.uploadPixelDataToTexture(t10.getTexture(m.dataId), n);\n let d = O().getBool(\"WEBGL_PACK\") ? new zh(l) : new Vh(l), f = t10.runWebGLProgram(d, [m], \"int32\");\n return t10.disposeData(m.dataId), f;\n}\nfunction PQ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, filter: s, bias: a, preluActivationWeights: i } = e, { strides: p, pad: u, dataFormat: c, dilations: l, dimRoundingMode: m, activation: d, leakyreluAlpha: f } = o, h = S.convertConv2DDataFormat(c), g = S.computeConv2DInfo(n.shape, s.shape, p, l, u, m, false, h), x, b = [], C = a != null, w = i != null, k = d === \"leakyrelu\", _ = () => {\n let A = [n, s], R = (D, P) => {\n if (P === \"NCHW\" && D.shape.length === 1 && D.shape[0] !== 1) {\n let M = re({ inputs: { x: D }, backend: t10, attrs: { shape: [D.shape[0], 1, 1] } });\n return b.push(M), M;\n }\n return D;\n };\n if (C && A.push(R(a, c)), w && A.push(R(i, c)), k) {\n let D = t10.makeTensorInfo([], \"float32\", y.createScalarValue(f, \"float32\"));\n A.push(D), b.push(D);\n }\n return A;\n };\n if (g.filterHeight === 1 && g.filterWidth === 1 && g.dilationHeight === 1 && g.dilationWidth === 1 && g.strideHeight === 1 && g.strideWidth === 1 && (g.padInfo.type === \"SAME\" || g.padInfo.type === \"VALID\"))\n x = Ih({ x: n, filter: s, convInfo: g, backend: t10, bias: a, activation: d, preluActivationWeights: i, leakyreluAlpha: f });\n else if (g.strideWidth <= 2 && h === \"channelsLast\" && O().getBool(\"WEBGL_EXP_CONV\")) {\n let A = d ? Ha(d, true) : null, R = new xc(g, C, A, w, k), D = [[g.padInfo.top, g.padInfo.left], [g.strideHeight, g.strideWidth], [g.dilationHeight, g.dilationWidth], [g.inHeight, g.inWidth]], P = _();\n x = t10.runWebGLProgram(R, P, \"float32\", D);\n } else if (O().getBool(\"WEBGL_CONV_IM2COL\"))\n x = vh({ x: n, filter: s, convInfo: g, backend: t10, bias: a, activation: d, preluActivationWeights: i, leakyreluAlpha: f });\n else {\n let A = d ? Ha(d, false) : null, R = new gc(g, C, A, w, k), D = _();\n x = t10.runWebGLProgram(R, D, \"float32\");\n }\n let E = re({ inputs: { x }, backend: t10, attrs: { shape: g.outShape } });\n return b.push(x), b.forEach((A) => t10.disposeIntermediateTensorInfo(A)), E;\n}\nvar vR = { kernelName: go, backendName: \"webgl\", kernelFunc: PQ };\nfunction MQ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, filter: s, bias: a, preluActivationWeights: i } = e, { strides: p, pad: u, dilations: c, dimRoundingMode: l, activation: m, leakyreluAlpha: d } = o, f = [], h = c;\n h == null && (h = [1, 1]), y.assert(S.eitherStridesOrDilationsAreOne(p, h), () => `Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${p} and dilations '${h}'`);\n let g = S.computeConv2DInfo(n.shape, s.shape, p, h, u, l, true), x = O().getBool(\"WEBGL_PACK_DEPTHWISECONV\") && g.strideWidth <= 2 && g.outChannels / g.inChannels === 1, b = m ? Ha(m, x) : null, C = [n, s], w = a != null, k = i != null, _ = m === \"leakyrelu\";\n if (w && C.push(a), k && C.push(i), _) {\n let D = t10.makeTensorInfo([], \"float32\", y.createScalarValue(d, \"float32\"));\n C.push(D), f.push(D);\n }\n let E;\n x ? E = new bc(g, w, b, k, _) : E = new yc(g, w, b, k, _);\n let A = [[g.padInfo.top, g.padInfo.left], [g.strideHeight, g.strideWidth], [g.dilationHeight, g.dilationWidth], [g.inHeight, g.inWidth]], R = t10.runWebGLProgram(E, C, \"float32\", A);\n return f.forEach((D) => t10.disposeIntermediateTensorInfo(D)), R;\n}\nvar kR = { kernelName: xo, backendName: \"webgl\", kernelFunc: MQ };\nvar Wh = class {\n constructor(e, t10, o, n) {\n this.sliceDim = e, this.strides = t10, this.paramsShape = n, this.variableNames = [\"x\", \"indices\"], this.outputShape = o;\n let s = $e(o.length), a = `\n int index;`;\n for (let i = 0; i < this.sliceDim; i++)\n a += `\n index = round(getIndices(coords[0], ${i}));\n out_of_bounds = out_of_bounds || index < 0;\n out_of_bounds = out_of_bounds || index >= ${this.paramsShape[i]};\n flattenIndex += index * ${this.strides[i]};`;\n this.userCode = `\n void main() {\n ${s} coords = getOutputCoords();\n int flattenIndex = 0;\n bool out_of_bounds = false;\n\n ${a}\n\n setOutput(out_of_bounds ? 0.0 : getX(flattenIndex, coords[1]));\n }\n `;\n }\n};\nfunction LQ(r) {\n let { inputs: e, backend: t10 } = r, { params: o, indices: n } = e, s = n.shape, a = s[s.length - 1], i = y.sizeFromShape(o.shape), [p, u, c, l] = S.prepareAndValidate(o, n), m = re({ inputs: { x: n }, backend: t10, attrs: { shape: [u, a] } }), d = re({ inputs: { x: o }, backend: t10, attrs: { shape: [y.sizeFromShape(o.shape) / c, c] } });\n if (t10.shouldExecuteOnCPU([o, n]) || o.dtype === \"string\") {\n let x = t10.readSync(n.dataId), b = t10.bufferSync(o), C = X$(x, b, o.dtype, u, a, c, l, o.shape, i);\n return t10.makeTensorInfo(p, o.dtype, C.values);\n }\n let f = new Wh(a, l, [u, c], o.shape), h = t10.runWebGLProgram(f, [d, m], d.dtype), g = re({ inputs: { x: h }, backend: t10, attrs: { shape: p } });\n return t10.disposeIntermediateTensorInfo(m), t10.disposeIntermediateTensorInfo(d), t10.disposeIntermediateTensorInfo(h), g;\n}\nvar NR = { kernelName: an, backendName: \"webgl\", kernelFunc: LQ };\nvar Uh = class {\n constructor(e, t10) {\n this.variableNames = [\"A\", \"indices\"], this.outputShape = t10, this.rank = t10.length;\n let o = $e(this.rank), n = BQ(e, 2);\n this.userCode = `\n void main() {\n ${o} resRC = getOutputCoords();\n int index = int(getIndices(resRC.x, resRC.z));\n float inBounds = (index >= 0) && (index < ${e[2]}) ? 1.0 : 0.0;\n setOutput(inBounds * getA(${n}));\n }\n `;\n }\n};\nfunction BQ(r, e) {\n let t10 = [\"resRC.x\", \"resRC.y\", \"resRC.z\", \"resRC.w\"], o = [];\n for (let n = 0; n < r.length; n++)\n n === 2 ? o.push(\"index\") : o.push(`${t10[n]}`);\n return o.join();\n}\nfunction Gw(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, indices: s } = e, { axis: a, batchDims: i } = o, p = y.parseAxisParam(a, n.shape)[0];\n if (O().get(\"DEBUG\")) {\n let b = t10.readSync(s.dataId), C = n.shape[p];\n for (let w = 0; w < b.length; ++w) {\n let k = b[w];\n y.assert(k <= C - 1 && k >= 0, () => `GatherV2: the index value ${k} is not in [0, ${C - 1}]`);\n }\n }\n let u = S.segment_util.collectGatherOpShapeInfo(n, s, p, i), c = y.sizeFromShape(s.shape), l = [], m = re({ inputs: { x: n }, backend: t10, attrs: { shape: [u.batchSize, u.outerSize, u.dimSize, u.sliceSize] } }), d = re({ inputs: { x: s }, backend: t10, attrs: { shape: [u.batchSize, c / u.batchSize] } });\n l.push(m), l.push(d);\n let f = [u.batchSize, u.outerSize, c / u.batchSize, u.sliceSize];\n if (t10.shouldExecuteOnCPU([n, s]) || n.dtype === \"string\") {\n let b = t10.bufferSync(d), C = t10.bufferSync(m), w = Y$(C, b, f);\n return l.forEach((k) => t10.disposeIntermediateTensorInfo(k)), t10.makeTensorInfo(u.outputShape, w.dtype, w.values);\n }\n let h = new Uh(m.shape, f), g = t10.runWebGLProgram(h, [m, d], m.dtype);\n l.push(g);\n let x = re({ inputs: { x: g }, backend: t10, attrs: { shape: u.outputShape } });\n return l.forEach((b) => t10.disposeIntermediateTensorInfo(b)), x;\n}\nvar TR = { kernelName: Is, backendName: \"webgl\", kernelFunc: Gw };\nvar VQ = \"return float(a > b);\";\nvar zQ = `\n return vec4(greaterThan(a, b));\n`;\nvar WQ = tt({ opSnippet: VQ, packedOpSnippet: zQ, cpuKernelImpl: Q$, dtype: \"bool\" });\nvar _R = { kernelName: un, backendName: \"webgl\", kernelFunc: WQ };\nvar UQ = \"return float(a >= b);\";\nvar GQ = `\n return vec4(greaterThanEqual(a, b));\n`;\nvar HQ = tt({ opSnippet: UQ, packedOpSnippet: GQ, dtype: \"bool\", cpuKernelImpl: Z$ });\nvar $R = { kernelName: pn, backendName: \"webgl\", kernelFunc: HQ };\nfunction KQ(r) {\n let { inputs: e, backend: t10 } = r, { input: o } = e;\n return Mh(o, true, t10);\n}\nvar ER = { kernelName: pi, backendName: \"webgl\", kernelFunc: KQ };\nvar qQ = \"return float(!isnan(x) && !isinf(x));\";\nvar jQ = he({ opSnippet: qQ, dtype: \"bool\" });\nvar AR = { kernelName: ha, backendName: \"webgl\", kernelFunc: jQ };\nvar XQ = \"return float(isinf(x));\";\nvar YQ = he({ opSnippet: XQ, dtype: \"bool\" });\nvar RR = { kernelName: ga, backendName: \"webgl\", kernelFunc: YQ };\nvar QQ = \"return float(isnan(x));\";\nvar ZQ = he({ opSnippet: QQ, dtype: \"bool\" });\nvar DR = { kernelName: cn, backendName: \"webgl\", kernelFunc: ZQ };\nvar JQ = \"return float(a < b);\";\nvar e7 = `\n return vec4(lessThan(a, b));\n`;\nvar t7 = tt({ opSnippet: JQ, packedOpSnippet: e7, cpuKernelImpl: J$, dtype: \"bool\" });\nvar FR = { kernelName: mn, backendName: \"webgl\", kernelFunc: t7 };\nvar r7 = \"return float(a <= b);\";\nvar o7 = `\n return vec4(lessThanEqual(a, b));\n`;\nvar n7 = tt({ opSnippet: r7, packedOpSnippet: o7, cpuKernelImpl: eE, dtype: \"bool\" });\nvar OR = { kernelName: dn, backendName: \"webgl\", kernelFunc: n7 };\nfunction s7(r) {\n let { backend: e, attrs: t10 } = r, { start: o, stop: n, num: s } = t10, a = tE(o, n, s);\n return e.makeTensorInfo([a.length], \"float32\", a);\n}\nvar PR = { kernelName: li, backendName: \"webgl\", kernelFunc: s7 };\nvar a7 = $o + `\n return x < 0.0 ? 0./0. : log(x);\n`;\nvar i7 = `\n vec4 result = log(x);\n bvec4 isNaN = isnan(x);\n result.r = isNaN.r ? x.r : (x.r < 0.0 ? 0./0. : result.r);\n result.g = isNaN.g ? x.g : (x.g < 0.0 ? 0./0. : result.g);\n result.b = isNaN.b ? x.b : (x.b < 0.0 ? 0./0. : result.b);\n result.a = isNaN.a ? x.a : (x.a < 0.0 ? 0./0. : result.a);\n return result;\n`;\nvar u7 = he({ opSnippet: a7, packedOpSnippet: i7, cpuKernelImpl: rE });\nvar MR = { kernelName: fn, backendName: \"webgl\", kernelFunc: u7 };\nvar p7 = $o + `\n return log(1.0 + x);\n`;\nvar c7 = he({ opSnippet: p7 });\nvar LR = { kernelName: xa, backendName: \"webgl\", kernelFunc: c7 };\nvar l7 = \"return float(a >= 1.0 && b >= 1.0);\";\nvar m7 = `\n return vec4(\n vec4(greaterThanEqual(a, vec4(1.0))) *\n vec4(greaterThanEqual(b, vec4(1.0))));\n`;\nvar d7 = tt({ opSnippet: l7, packedOpSnippet: m7, dtype: \"bool\" });\nvar BR = { kernelName: hn, backendName: \"webgl\", kernelFunc: d7 };\nvar f7 = \"return float(!(x >= 1.0));\";\nvar h7 = he({ opSnippet: f7 });\nvar VR = { kernelName: gn, backendName: \"webgl\", kernelFunc: h7 };\nvar g7 = \"return float(a >= 1.0 || b >= 1.0);\";\nvar x7 = `\n return min(\n vec4(greaterThanEqual(a, vec4(1.0))) +\n vec4(greaterThanEqual(b, vec4(1.0))),\n vec4(1.0));\n`;\nvar y7 = tt({ opSnippet: g7, packedOpSnippet: x7, dtype: \"bool\" });\nvar zR = { kernelName: xn, backendName: \"webgl\", kernelFunc: y7 };\nvar Gh = class {\n constructor(e, t10, o, n, s) {\n this.variableNames = [\"x\"], this.outputShape = [];\n let a = t10, i = e[3] - 1;\n this.outputShape = e;\n let p, u = `float(${o}) + float(${n}) * sum`;\n s === 0.5 ? p = `inversesqrt(${u})` : s === 1 ? p = `1.0/(${u})` : p = `exp(log(${u}) * float(-${s}));`, this.userCode = `\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int r = coords[1];\n int c = coords[2];\n int d = coords[3];\n float x = getX(b, r, c, d);\n float sum = 0.0;\n for (int j = -${a}; j <= ${a}; j++) {\n int idx = d + j;\n if (idx >= 0 && idx <= ${i}) {\n float z = getX(b, r, c, idx);\n sum += z * z;\n }\n }\n float val = x * ${p};\n setOutput(val);\n }\n `;\n }\n};\nvar Hh = class {\n constructor(e, t10, o, n, s) {\n this.variableNames = [\"x\"], this.outputShape = [], this.packedInputs = true, this.packedOutput = true;\n let a = t10, i = e[3] - 1;\n this.outputShape = e;\n let p, u = `float(${o}) + float(${n}) * sum`;\n s === 0.5 ? p = `inversesqrt(${u})` : s === 1 ? p = `1.0/(${u})` : p = `exp(log(${u}) * float(-${s}));`, this.userCode = `\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords.x;\n int r = coords.y;\n int c = coords.z;\n int d = coords.w;\n\n bool hasNextCol = d < ${this.outputShape[3]};\n bool hasNextRow = c < ${this.outputShape[2]};\n\n vec4 sum = vec4(0.);\n vec4 xFragAtOutputCoords = getX(b, r, c, d);\n\n vec4 xAtOutputCoords = vec4(\n getChannel(xFragAtOutputCoords, vec2(c, d)),\n hasNextCol ?\n getChannel(xFragAtOutputCoords, vec2(c, d + 1)) : 0.0,\n hasNextRow ?\n getChannel(xFragAtOutputCoords , vec2(c + 1, d)) : 0.0,\n (hasNextRow && hasNextCol) ?\n getChannel(xFragAtOutputCoords, vec2(c + 1, d + 1)) : 0.0\n );\n\n int firstChannel = d - ${a};\n vec2 cache = vec2(0.);\n if(firstChannel >= 0){\n vec4 firstChannelFrag = getX(b, r, c, firstChannel);\n cache.x = getChannel(firstChannelFrag, vec2(c, firstChannel));\n if(hasNextRow){\n cache.y = getChannel(firstChannelFrag, vec2(c + 1, firstChannel));\n }\n }\n\n ivec2 depth = ivec2(d, d + 1);\n for (int j = - ${a}; j <= ${a}; j++) {\n ivec2 idx = depth + j;\n bvec2 aboveLowerBound = greaterThanEqual(idx, ivec2(0));\n bvec2 belowUpperBound = lessThanEqual(idx, ivec2(${i}));\n\n bool depthInRange = aboveLowerBound.x && belowUpperBound.x;\n bool depthPlusOneInRange = aboveLowerBound.y && belowUpperBound.y;\n\n if(depthInRange || depthPlusOneInRange){\n vec4 z = vec4(0.);\n vec4 xFragAtCurrentDepth;\n z.xz = cache.xy;\n if(depthPlusOneInRange && hasNextCol){\n xFragAtCurrentDepth = idx.y != d ?\n getX(b, r, c, idx.y) : xFragAtOutputCoords;\n z.y = getChannel(xFragAtCurrentDepth, vec2(c, idx.y));\n if(hasNextRow){\n z.w = getChannel(xFragAtCurrentDepth, vec2(c + 1, idx.y));\n }\n }\n cache.xy = z.yw;\n sum += z * z;\n }\n }\n vec4 result = xAtOutputCoords * ${p};\n setOutput(result);\n }\n `;\n }\n};\nvar b7 = (r) => {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { depthRadius: s, bias: a, alpha: i, beta: p } = o, u = O().getBool(\"WEBGL_PACK_NORMALIZATION\") ? new Hh(n.shape, s, a, i, p) : new Gh(n.shape, s, a, i, p);\n return t10.runWebGLProgram(u, [n], n.dtype);\n};\nvar WR = { kernelName: mi, backendName: \"webgl\", kernelFunc: b7 };\nvar Kh = class {\n constructor(e, t10, o, n, s) {\n this.variableNames = [\"inputImage\", \"outputImage\", \"dy\"], this.outputShape = [], this.outputShape = e, this.depth = e[3], this.depthRadius = t10, this.bias = o, this.alpha = n, this.beta = s, this.userCode = `\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int r = coords[1];\n int c = coords[2];\n\n float result = 0.0;\n for (int d = 0; d < ${this.depth}; ++d) {\n int depthBegin = int(max(0.0, float(d - ${t10})));\n int depthEnd = int(min(float(${this.depth}),\n float(d + ${t10} + 1)));\n\n const int MIN_DEPTH_BEGIN = 0;\n const int MAX_DEPTH_END = ${this.depth};\n\n float norm = 0.0;\n for (int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k) {\n if (k < depthBegin){\n continue;\n }\n else if (k >= depthBegin && k < depthEnd) {\n norm += getInputImage(b, r, c, k) * getInputImage(b, r, c, k);\n }\n else {\n break;\n }\n }\n\n norm = float(${n}) * norm + float(${o});\n\n for(int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k){\n if (k < depthBegin){\n continue;\n }\n else if (k >= depthBegin && k < depthEnd){\n float dyi = -2.0 * float(${n})\n * float(${s})\n * getInputImage(b, r, c, k) * getOutputImage(b, r, c, d)\n / norm;\n if (k == d) {\n dyi += pow(norm, -1.0 * ${s});\n }\n if (k == coords[3]) {\n dyi *= getDy(b, r, c, d);\n result += dyi;\n }\n }\n else {\n break;\n }\n }\n }\n setOutput(result);\n }\n `;\n }\n};\nvar C7 = (r) => {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, y: s, dy: a } = e, { depthRadius: i, bias: p, alpha: u, beta: c } = o, l = new Kh(n.shape, i, p, u, c);\n return t10.runWebGLProgram(l, [n, s, a], n.dtype);\n};\nvar UR = { kernelName: Tm, backendName: \"webgl\", kernelFunc: C7 };\nfunction GR(r, e, t10, o) {\n let n = y.sizeFromShape(e), a = y.sizeFromShape(r.shape) / n, i = re({ inputs: { x: r }, attrs: { shape: [a, n] }, backend: o }), p = Ur(i, r.dtype, \"max\", o), u = re({ inputs: { x: p }, attrs: { shape: t10 }, backend: o });\n return o.disposeIntermediateTensorInfo(i), o.disposeIntermediateTensorInfo(p), u;\n}\nfunction Hw(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { reductionIndices: s, keepDims: a } = o, i = n.shape.length, p = y.parseAxisParam(s, n.shape), u = p, c = S.getAxesPermutation(u, i), l = c != null, m = t10.shouldExecuteOnCPU([n]), d = n;\n if (l) {\n if (m) {\n let C = t10.texData.get(d.dataId).values, w = new Array(i);\n for (let E = 0; E < w.length; E++)\n w[E] = n.shape[c[E]];\n let k = Bu(C, n.shape, n.dtype, c, w);\n d = t10.makeTensorInfo(w, n.dtype);\n let _ = t10.texData.get(d.dataId);\n _.values = k;\n } else\n d = zi(n, c, t10);\n u = S.getInnerMostAxes(u.length, i);\n }\n S.assertAxesAreInnerMostDims(\"max\", u, i);\n let [f, h] = S.computeOutAndReduceShapes(d.shape, u), g = f;\n a && (g = S.expandShapeToKeepDim(f, p));\n let x;\n if (m) {\n let C = t10.texData.get(d.dataId).values, w = oE(C, y.sizeFromShape(h), g, n.dtype);\n x = t10.makeTensorInfo(g, n.dtype);\n let k = t10.texData.get(x.dataId);\n k.values = w;\n } else\n x = GR(d, h, g, t10);\n return l && t10.disposeIntermediateTensorInfo(d), x;\n}\nvar HR = { kernelName: yn, backendName: \"webgl\", kernelFunc: Hw };\nvar S7 = dc + `\n return max(a, b);\n`;\nvar w7 = `\n vec4 result = vec4(max(a, b));\n bvec4 isNaNA = isnan(a);\n bvec4 isNaNB = isnan(b);\n bvec4 isNaN = bvec4(isNaNA.x || isNaNB.x, isNaNA.y || isNaNB.y, isNaNA.z || isNaNB.z, isNaNA.w || isNaNB.w);\n ` + Js + `\n return result;\n`;\nvar I7 = tt({ opSnippet: S7, packedOpSnippet: w7, cpuKernelImpl: nE });\nvar KR = { kernelName: bn, backendName: \"webgl\", kernelFunc: I7 };\nfunction v7(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e;\n us(n, \"maxPool\");\n let { filterSize: s, strides: a, pad: i, dimRoundingMode: p } = o, u = 1;\n y.assert(S.eitherStridesOrDilationsAreOne(a, u), () => `Error in maxPool: Either strides or dilations must be 1. Got strides ${a} and dilations '${u}'`);\n let c = S.computePool2DInfo(n.shape, s, a, u, i, p);\n if (c.filterWidth === 1 && c.filterHeight === 1 && y.arraysEqual(c.inShape, c.outShape))\n return At({ inputs: { x: n }, backend: t10 });\n let l = new cs(c, \"max\", false);\n return t10.runWebGLProgram(l, [n], n.dtype);\n}\nvar qR = { kernelName: Cn, backendName: \"webgl\", kernelFunc: v7 };\nfunction k7(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { filterSize: s, strides: a, pad: i, dataFormat: p, dimRoundingMode: u } = o, c = [1, 1, 1], l = S.computePool3DInfo(n.shape, s, a, c, i, u, p), m = new Wi(l, \"max\", false);\n return t10.runWebGLProgram(m, [n], n.dtype);\n}\nvar jR = { kernelName: Cp, backendName: \"webgl\", kernelFunc: k7 };\nvar qh = class {\n constructor(e) {\n this.variableNames = [\"dy\", \"maxPos\"], this.outputShape = e.inShape;\n let t10 = e.strideHeight, o = e.strideWidth, n = e.dilationHeight, s = e.effectiveFilterHeight, a = e.effectiveFilterWidth, i = s - 1 - e.padInfo.top, p = a - 1 - e.padInfo.left, u = s * a - 1;\n this.userCode = `\n const ivec2 pads = ivec2(${i}, ${p});\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n\n ivec2 dyRCCorner = coords.yz - pads;\n int dyRCorner = dyRCCorner.x;\n int dyCCorner = dyRCCorner.y;\n\n // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < ${s};\n wR += ${n}) {\n float dyR = float(dyRCorner + wR) / ${t10}.0;\n\n if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < ${a}; wC++) {\n float dyC = float(dyCCorner + wC) / ${o}.0;\n\n if (dyC < 0.0 || dyC >= ${e.outWidth}.0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(b, idyR, idyC, d);\n int maxPosValue = ${u} - int(getMaxPos(b, idyR, idyC, d));\n\n // Get the current value, check it against the value from the\n // position matrix.\n int curPosValue = wR * ${a} + wC;\n float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\n\n dotProd += dyValue * mask;\n }\n }\n setOutput(dotProd);\n }\n `;\n }\n};\nvar jh = class {\n constructor(e) {\n this.variableNames = [\"dy\", \"maxPos\"], this.outputShape = e.inShape;\n let t10 = e.strideDepth, o = e.strideHeight, n = e.strideWidth, s = e.dilationDepth, a = e.dilationHeight, i = e.dilationWidth, p = e.effectiveFilterDepth, u = e.effectiveFilterHeight, c = e.effectiveFilterWidth, l = p - 1 - e.padInfo.front, m = u - 1 - e.padInfo.top, d = c - 1 - e.padInfo.left, f = p * u * c - 1;\n this.userCode = `\n const ivec3 pads = ivec3(${l}, ${m}, ${d});\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n int dyDCorner = dyCorner.x;\n int dyRCorner = dyCorner.y;\n int dyCCorner = dyCorner.z;\n\n // Convolve dy(?, ?, ?, ch) with pos mask(:, :, :, d) to get\n // dx(xD, xR, xC, ch).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int wD = 0; wD < ${p};\n wD += ${s}) {\n float dyD = float(dyDCorner + wD) / ${t10}.0;\n\n if (dyD < 0.0 || dyD >= ${e.outDepth}.0 || fract(dyD) > 0.0) {\n continue;\n }\n int idyD = int(dyD);\n\n for (int wR = 0; wR < ${u};\n wR += ${a}) {\n float dyR = float(dyRCorner + wR) / ${o}.0;\n\n if (dyR < 0.0 || dyR >= ${e.outHeight}.0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < ${c};\n wC += ${i}) {\n float dyC = float(dyCCorner + wC) / ${n}.0;\n\n if (dyC < 0.0 || dyC >= ${e.outWidth}.0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(batch, idyD, idyR, idyC, ch);\n int maxPosValue = ${f} -\n int(getMaxPos(batch, idyD, idyR, idyC, ch));\n\n // Get the current value, check it against the value from the\n // position matrix.\n int curPosValue =\n wD * ${u} * ${c} +\n wR * ${c} + wC;\n float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\n\n dotProd += dyValue * mask;\n }\n }\n }\n setOutput(dotProd);\n }\n `;\n }\n};\nfunction N7(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { dy: n, input: s } = e, a = s, { filterSize: i, strides: p, pad: u, dimRoundingMode: c } = o, l = [1, 1, 1], m = S.computePool3DInfo(a.shape, i, p, l, u, c), d = new Wi(m, \"max\", true), f = t10.runWebGLProgram(d, [a], a.dtype), h = new jh(m), g = t10.runWebGLProgram(h, [n, f], a.dtype);\n return t10.disposeIntermediateTensorInfo(f), g;\n}\nvar XR = { kernelName: $m, backendName: \"webgl\", kernelFunc: N7 };\nfunction T7(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { dy: n, input: s, output: a } = e, i = s;\n us([s, a], \"maxPoolGrad\");\n let { filterSize: p, strides: u, pad: c, dimRoundingMode: l } = o, m = S.computePool2DInfo(i.shape, p, u, 1, c, l), d = true, f = new cs(m, \"max\", d), h = t10.runWebGLProgram(f, [i], i.dtype), g = new qh(m), x = t10.runWebGLProgram(g, [n, h], i.dtype);\n return t10.disposeIntermediateTensorInfo(h), x;\n}\nvar YR = { kernelName: _m, backendName: \"webgl\", kernelFunc: T7 };\nfunction QR(r, e, t10, o) {\n let n = new cs(t10, \"max\", false), s = o.runWebGLProgram(n, [r], \"float32\");\n n = new cs(t10, \"max\", true, true, e);\n let a = o.runWebGLProgram(n, [r], \"float32\");\n return [s, a];\n}\nvar ZR = { kernelName: Sp, backendName: \"webgl\", kernelFunc: ({ inputs: r, attrs: e, backend: t10 }) => {\n let { x: o } = r, { filterSize: n, strides: s, pad: a, includeBatchInIndex: i } = e, p = t10;\n y.assert(o.shape.length === 4, () => `Error in maxPool: input must be rank 4 but got rank ${o.shape.length}.`);\n let u = [1, 1];\n y.assert(S.eitherStridesOrDilationsAreOne(s, u), () => `Error in maxPool: Either strides or dilations must be 1. Got strides ${s} and dilations '${u}'`);\n let c = S.computePool2DInfo(o.shape, n, s, u, a), [l, m] = QR(o, i, c, p);\n return [l, m];\n} };\nfunction JR(r, e, t10, o) {\n let n = y.sizeFromShape(e), a = y.sizeFromShape(r.shape) / n, i = re({ inputs: { x: r }, attrs: { shape: [a, n] }, backend: o }), p = Ur(i, \"float32\", \"mean\", o), u = re({ inputs: { x: p }, attrs: { shape: t10 }, backend: o });\n return o.disposeIntermediateTensorInfo(i), o.disposeIntermediateTensorInfo(p), u;\n}\nvar eD = { kernelName: Sn, backendName: \"webgl\", kernelFunc: ({ inputs: r, attrs: e, backend: t10 }) => {\n let { x: o } = r, { keepDims: n, axis: s } = e, a = t10, i = o.shape.length, p = y.parseAxisParam(s, o.shape), u = p, c = S.getAxesPermutation(u, i), l = c != null, m = a.shouldExecuteOnCPU([o]), d = [], f = o;\n if (l) {\n if (m) {\n let w = a.texData.get(f.dataId).values, k = new Array(i);\n for (let A = 0; A < k.length; A++)\n k[A] = o.shape[c[A]];\n let _ = Bu(w, o.shape, o.dtype, c, k);\n f = a.makeTensorInfo(k, o.dtype);\n let E = a.texData.get(f.dataId);\n E.values = _;\n } else\n f = zi(o, c, a);\n d.push(f), u = S.getInnerMostAxes(u.length, i);\n }\n S.assertAxesAreInnerMostDims(\"sum\", u, i);\n let [h, g] = S.computeOutAndReduceShapes(f.shape, u), x = h;\n n && (x = S.expandShapeToKeepDim(h, p));\n let b = JR(f, g, x, a);\n for (let C of d)\n a.disposeIntermediateTensorInfo(C);\n return b;\n} };\nfunction _7(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s, keepDims: a } = o, i = n.shape.length, p = y.parseAxisParam(s, n.shape), u = p, c = S.getAxesPermutation(u, i), l = n;\n c != null && (l = yt({ inputs: { x: n }, backend: t10, attrs: { perm: c } }), u = S.getInnerMostAxes(u.length, n.shape.length)), S.assertAxesAreInnerMostDims(\"min\", u, i);\n let [m, d] = S.computeOutAndReduceShapes(l.shape, u), f = y.sizeFromShape(d), h = re({ inputs: { x: l }, backend: t10, attrs: { shape: [-1, f] } }), g = Ur(h, h.dtype, \"min\", t10), x;\n if (a) {\n let b = S.expandShapeToKeepDim(m, p);\n x = re({ inputs: { x: g }, backend: t10, attrs: { shape: b } });\n } else\n x = re({ inputs: { x: g }, backend: t10, attrs: { shape: m } });\n return t10.disposeIntermediateTensorInfo(h), t10.disposeIntermediateTensorInfo(g), c != null && t10.disposeIntermediateTensorInfo(l), x;\n}\nvar tD = { kernelName: wn, backendName: \"webgl\", kernelFunc: _7 };\nvar $7 = dc + `\n return min(a, b);\n`;\nvar E7 = `\n vec4 result = vec4(min(a, b));\n bvec4 isNaNA = isnan(a);\n bvec4 isNaNB = isnan(b);\n bvec4 isNaN = bvec4(isNaNA.x || isNaNB.x, isNaNA.y || isNaNB.y, isNaNA.z || isNaNB.z, isNaNA.w || isNaNB.w);\n ` + Js + `\n return result;\n`;\nvar A7 = tt({ opSnippet: $7, packedOpSnippet: E7, cpuKernelImpl: sE });\nvar rD = { kernelName: In, backendName: \"webgl\", kernelFunc: A7 };\nvar Xh = class {\n constructor(e, t10, o) {\n this.variableNames = [\"x\"], this.outputShape = t10.map((c, l) => c[0] + e[l] + c[1]);\n let n = e.length, s = $e(n), a = t10.map((c) => c[0]).join(\",\"), i = t10.map((c, l) => c[0] + e[l]).join(\",\"), p = [\"coords[0]\", \"coords[1]\", \"coords[2]\", \"coords[3]\"].slice(0, n), u = o === \"reflect\" ? 0 : 1;\n if (n === 1) {\n this.userCode = `\n int start = ${a};\n int end = ${i};\n\n void main() {\n int outC = getOutputCoords();\n if (outC < start) {\n outC = start * 2 - outC - ${u};\n } else if(outC >= end) {\n outC = (end - 1) * 2 - outC + ${u};\n }\n setOutput(getX(outC - start));\n }\n `;\n return;\n }\n this.userCode = `\n ${s} start = ${s}(${a});\n ${s} end = ${s}(${i});\n\n void main() {\n ${s} outC = getOutputCoords();\n for (int i = 0; i < ${n}; i++) {\n if (outC[i] < start[i]) {\n outC[i] = start[i] * 2 - outC[i] - ${u};\n } else if(outC[i] >= end[i]) {\n outC[i] = (end[i] - 1) * 2 - outC[i] + ${u};\n }\n }\n ${s} coords = outC - start;\n setOutput(getX(${p}));\n }\n `;\n }\n};\nvar Yh = class {\n constructor(e, t10, o) {\n this.variableNames = [\"x\"], this.packedInputs = true, this.packedOutput = true, this.outputShape = t10.map((f, h) => f[0] + e[h] + f[1]);\n let n = e.length, s = $e(n), a = t10.map((f) => f[0]).join(\",\"), i = t10.map((f, h) => f[0] + e[h]).join(\",\"), p = Et(\"rc\", n), u = Et(\"source\", n), c = `${p[n - 1]} < ${this.outputShape[n - 1]}`, l = n === 1 ? \"source\" : `vec2(${u.slice(-2).join()})`, m = o === \"reflect\" ? 0 : 1, d = \"\";\n if (n === 1) {\n let f = `\n ${s} source = rc;\n if (source < start) {\n source = start * 2 - source - ${m};\n } else if (source >= end) {\n source = (end - 1) * 2 - source + ${m};\n }\n source -= start;\n `;\n d = `\n ${s} rc = outputLoc;\n ${f}\n result[0] = getChannel(getX(${u.join()}), ${l});\n ${p[n - 1]} += 1;\n if(${c}) {\n ${f}\n result[1] = getChannel(getX(${u.join()}), ${l});\n }\n `;\n } else {\n let f = `\n ${s} source = rc;\n ${s} lt = ${s}(lessThan(source, start));\n ${s} gte = ${s}(greaterThanEqual(source, end));\n ${s} orig = 1 - (lt + gte);\n source = orig * source +\n lt * (start * 2 - source - ${m}) +\n gte * ((end - 1) * 2 - source + ${m});\n source -= start;\n `;\n d = `\n ${s} rc = outputLoc;\n ${f}\n result[0] = getChannel(getX(${u.join()}), ${l});\n ${p[n - 1]} += 1;\n if(${c}) {\n ${f}\n result[1] = getChannel(getX(${u.join()}), ${l});\n }\n rc = outputLoc;\n ${p[n - 2]} += 1;\n if(${p[n - 2]} < ${this.outputShape[n - 2]}) {\n ${f}\n result[2] = getChannel(getX(${u.join()}), ${l});\n ${p[n - 1]} += 1;\n if(${c}) {\n ${f}\n result[3] = getChannel(getX(${u.join()}), ${l});\n }\n }\n `;\n }\n this.userCode = `\n const ${s} start = ${s}(${a});\n const ${s} end = ${s}(${i});\n\n void main() {\n ${s} outputLoc = getOutputCoords();\n vec4 result = vec4(0.);\n ${d}\n setOutput(result);\n }\n `;\n }\n};\nvar R7 = ({ inputs: r, backend: e, attrs: t10 }) => {\n let { x: o } = r, { paddings: n, mode: s } = t10, a = O().getBool(\"WEBGL_PACK_ARRAY_OPERATIONS\") ? new Yh(o.shape, n, s) : new Xh(o.shape, n, s);\n return e.runWebGLProgram(a, [o], o.dtype);\n};\nvar oD = { kernelName: vn, backendName: \"webgl\", kernelFunc: R7 };\nvar D7 = `if (b == 0.0) return NAN;\n return mod(a, b);`;\nvar F7 = `\n vec4 result = mod(a, b);\n bvec4 isNaN = equal(b, vec4(0.0));\n ` + Js + `\n return result;\n`;\nvar O7 = tt({ opSnippet: D7, packedOpSnippet: F7 });\nvar nD = { kernelName: ya, backendName: \"webgl\", kernelFunc: O7 };\nvar Qh = class {\n constructor(e, t10, o) {\n this.variableNames = [\"probs\"], this.customUniforms = [{ name: \"seed\", type: \"float\" }], this.outputShape = [e, o], this.userCode = `\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n\n float r = random(seed);\n float cdf = 0.0;\n\n for (int i = 0; i < ${t10 - 1}; i++) {\n cdf += getProbs(batch, i);\n\n if (r < cdf) {\n setOutput(float(i));\n return;\n }\n }\n\n // If no other event happened, last event happened.\n setOutput(float(${t10 - 1}));\n }\n `;\n }\n};\nvar P7 = `\nif (a == b) {\n return 1.0;\n};\nreturn a / b;`;\nvar M7 = `\n // vec4 one = vec4(equal(a, b));\n // return one + (vec4(1.0) - one) * a / b;\n vec4 result = a / b;\n if(a.x == b.x) {\n result.x = 1.;\n }\n if(a.y == b.y) {\n result.y = 1.;\n }\n if(a.z == b.z) {\n result.z = 1.;\n }\n if(a.w == b.w) {\n result.w = 1.;\n }\n\n return result;\n`;\nvar Kw = tt({ opSnippet: P7, packedOpSnippet: M7, checkOutOfBounds: true });\nvar sD = { kernelName: Zo, backendName: \"webgl\", kernelFunc: Kw };\nvar aD = \"return a - b;\";\nvar qw = tt({ opSnippet: aD, packedOpSnippet: aD, supportsComplex: true, cpuKernelImpl: kE });\nvar iD = { kernelName: Yn, backendName: \"webgl\", kernelFunc: qw };\nfunction jw(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { logits: n } = e, { dim: s } = o, a = y.parseAxisParam([s], n.shape), i = Hw({ inputs: { x: n }, backend: t10, attrs: { reductionIndices: a, keepDims: false } }), p = S.expandShapeToKeepDim(i.shape, a), u = re({ inputs: { x: i }, backend: t10, attrs: { shape: p } }), c = qw({ inputs: { a: n, b: u }, backend: t10 }), l = Ww({ inputs: { x: c }, backend: t10 }), m = Vu({ inputs: { x: l }, backend: t10, attrs: { axis: a, keepDims: false } }), d = re({ inputs: { x: m }, backend: t10, attrs: { shape: p } }), f = Kw({ inputs: { a: l, b: d }, backend: t10 });\n return t10.disposeIntermediateTensorInfo(i), t10.disposeIntermediateTensorInfo(u), t10.disposeIntermediateTensorInfo(c), t10.disposeIntermediateTensorInfo(l), t10.disposeIntermediateTensorInfo(m), t10.disposeIntermediateTensorInfo(d), f;\n}\nvar uD = { kernelName: qn, backendName: \"webgl\", kernelFunc: jw };\nfunction L7(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { logits: n } = e, { numSamples: s, seed: a, normalized: i } = o, p = i ? n : jw({ inputs: { logits: n }, backend: t10, attrs: { dim: n.shape.length - 1 } }), u = p.shape[0], c = p.shape[1], l = new Qh(u, c, s), m = [[a]], d = t10.runWebGLProgram(l, [p], \"int32\", m);\n return i || t10.disposeIntermediateTensorInfo(p), d;\n}\nvar pD = { kernelName: wp, backendName: \"webgl\", kernelFunc: L7 };\nvar B7 = zt + `\n return -x;\n`;\nvar V7 = `\n vec4 result = -x;\n bvec4 isNaN = isnan(x);\n\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n`;\nfunction z7(r) {\n let { inputs: e, backend: t10 } = r, { x: o } = e;\n if (t10.shouldExecuteOnCPU([o])) {\n let s = t10.texData.get(o.dataId), [a, i] = iE(s.values, o.shape, o.dtype);\n return t10.makeTensorInfo(i, o.dtype, a);\n }\n let n;\n return O().getBool(\"WEBGL_PACK_UNARY_OPERATIONS\") ? n = new Er(o.shape, V7) : n = new Jt(o.shape, B7), t10.runWebGLProgram(n, [o], o.dtype);\n}\nvar cD = { kernelName: vs, backendName: \"webgl\", kernelFunc: z7 };\nvar W7 = Vt.nonMaxSuppressionV3Impl;\nfunction U7(r) {\n S.warn(\"tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead\");\n let { inputs: e, backend: t10, attrs: o } = r, { boxes: n, scores: s } = e, { maxOutputSize: a, iouThreshold: i, scoreThreshold: p } = o, u = t10.readSync(n.dataId), c = t10.readSync(s.dataId), { selectedIndices: l } = W7(u, c, a, i, p);\n return t10.makeTensorInfo([l.length], \"int32\", new Int32Array(l));\n}\nvar lD = { kernelName: Tn, backendName: \"webgl\", kernelFunc: U7 };\nvar G7 = Vt.nonMaxSuppressionV4Impl;\nfunction H7(r) {\n S.warn(\"tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead\");\n let { inputs: e, backend: t10, attrs: o } = r, { boxes: n, scores: s } = e, { maxOutputSize: a, iouThreshold: i, scoreThreshold: p, padToMaxOutputSize: u } = o, c = t10.readSync(n.dataId), l = t10.readSync(s.dataId), { selectedIndices: m, validOutputs: d } = G7(c, l, a, i, p, u);\n return [t10.makeTensorInfo([m.length], \"int32\", new Int32Array(m)), t10.makeTensorInfo([], \"int32\", new Int32Array([d]))];\n}\nvar mD = { kernelName: ba, backendName: \"webgl\", kernelFunc: H7 };\nvar K7 = Vt.nonMaxSuppressionV5Impl;\nfunction q7(r) {\n S.warn(\"tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead\");\n let { inputs: e, backend: t10, attrs: o } = r, { boxes: n, scores: s } = e, { maxOutputSize: a, iouThreshold: i, scoreThreshold: p, softNmsSigma: u } = o, c = t10.readSync(n.dataId), l = t10.readSync(s.dataId), m = a, d = i, f = p, h = u, { selectedIndices: g, selectedScores: x } = K7(c, l, m, d, f, h);\n return [t10.makeTensorInfo([g.length], \"int32\", new Int32Array(g)), t10.makeTensorInfo([x.length], \"float32\", new Float32Array(x))];\n}\nvar dD = { kernelName: _n, backendName: \"webgl\", kernelFunc: q7 };\nvar Zh = class {\n constructor(e, t10, o, n) {\n this.variableNames = [\"indices\"], this.outputShape = [e, t10], this.userCode = `\n void main() {\n ivec2 coords = getOutputCoords();\n int index = round(getIndices(coords.x));\n setOutput(mix(float(${n}), float(${o}),\n float(index == coords.y)));\n }\n `;\n }\n};\nvar j7 = (r) => {\n let { inputs: e, backend: t10, attrs: o } = r, { indices: n } = e, { dtype: s, depth: a, onValue: i, offValue: p } = o, u = y.sizeFromShape(n.shape), c = new Zh(u, a, i, p), l = re({ inputs: { x: n }, backend: t10, attrs: { shape: [u] } }), m = t10.runWebGLProgram(c, [l], s);\n t10.disposeIntermediateTensorInfo(l);\n let d = [...n.shape, a], f = re({ inputs: { x: m }, backend: t10, attrs: { shape: d } });\n return t10.disposeIntermediateTensorInfo(m), f;\n};\nvar fD = { kernelName: $n, backendName: \"webgl\", kernelFunc: j7 };\nfunction Fl(r) {\n let { inputs: e, backend: t10 } = r, { x: o } = e;\n if (o.dtype === \"complex64\") {\n let n = Ka({ inputs: { input: o }, backend: t10 }), s = Fl({ inputs: { x: n }, backend: t10 }), a = Wu({ inputs: { input: o }, backend: t10 }), i = Fl({ inputs: { x: a }, backend: t10 }), p = Ar({ inputs: { real: s, imag: i }, backend: t10 });\n return t10.disposeIntermediateTensorInfo(n), t10.disposeIntermediateTensorInfo(s), t10.disposeIntermediateTensorInfo(a), t10.disposeIntermediateTensorInfo(i), p;\n } else\n return qa({ attrs: { shape: o.shape, dtype: o.dtype, value: o.dtype === \"string\" ? \"\" : 0 }, backend: t10 });\n}\nvar hD = { kernelName: Os, backendName: \"webgl\", kernelFunc: Fl };\nfunction gD(r) {\n let { inputs: e, backend: t10 } = r, { x: o } = e;\n if (o.dtype === \"string\")\n throw new Error(\"onesLike is not supported under string dtype\");\n if (o.dtype === \"complex64\") {\n let n = Ka({ inputs: { input: o }, backend: t10 }), s = gD({ inputs: { x: n }, backend: t10 }), a = Wu({ inputs: { input: o }, backend: t10 }), i = Fl({ inputs: { x: a }, backend: t10 }), p = Ar({ inputs: { real: s, imag: i }, backend: t10 });\n return t10.disposeIntermediateTensorInfo(n), t10.disposeIntermediateTensorInfo(s), t10.disposeIntermediateTensorInfo(a), t10.disposeIntermediateTensorInfo(i), p;\n } else\n return qa({ attrs: { shape: o.shape, dtype: o.dtype, value: 1 }, backend: t10 });\n}\nvar xD = { kernelName: ks, backendName: \"webgl\", kernelFunc: gD };\nfunction X7(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { axis: n } = o;\n if (e.length === 1)\n return Ph({ inputs: { input: e[0] }, backend: t10, attrs: { dim: n } });\n let s = e[0].shape, a = e[0].dtype;\n e.forEach((c) => {\n y.assertShapesMatch(s, c.shape, \"All tensors passed to stack must have matching shapes\"), y.assert(a === c.dtype, () => \"All tensors passed to stack must have matching dtypes\");\n });\n let i = [], p = e.map((c) => {\n let l = Ph({ inputs: { input: c }, backend: t10, attrs: { dim: n } });\n return i.push(l), l;\n }), u = zw({ inputs: p, backend: t10, attrs: { axis: n } });\n return i.forEach((c) => t10.disposeIntermediateTensorInfo(c)), u;\n}\nvar yD = { kernelName: Ns, backendName: \"webgl\", kernelFunc: X7 };\nvar Jh = class {\n constructor(e, t10, o) {\n this.variableNames = [\"x\"], this.customUniforms = [{ name: \"value\", type: \"float\" }], this.outputShape = t10.map((u, c) => u[0] + e[c] + u[1]);\n let n = e.length, s = $e(n), a = t10.map((u) => u[0]).join(\",\"), i = t10.map((u, c) => u[0] + e[c]).join(\",\"), p = [\"coords[0]\", \"coords[1]\", \"coords[2]\", \"coords[3]\"].slice(0, n);\n if (n === 1) {\n this.userCode = `\n int start = ${a};\n int end = ${i};\n\n void main() {\n int outC = getOutputCoords();\n if (outC < start || outC >= end) {\n setOutput(value);\n } else {\n setOutput(getX(outC - start));\n }\n }\n `;\n return;\n }\n this.userCode = `\n ${s} start = ${s}(${a});\n ${s} end = ${s}(${i});\n\n void main() {\n ${s} outC = getOutputCoords();\n if (any(lessThan(outC, start)) || any(greaterThanEqual(outC, end))) {\n setOutput(value);\n } else {\n ${s} coords = outC - start;\n setOutput(getX(${p}));\n }\n }\n `;\n }\n};\nvar eg = class {\n constructor(e, t10, o) {\n this.variableNames = [\"x\"], this.packedInputs = true, this.packedOutput = true, this.customUniforms = [{ name: \"value\", type: \"float\" }], this.outputShape = t10.map((h, g) => h[0] + e[g] + h[1]);\n let n = e.length, s = $e(n), a = t10.map((h) => h[0]).join(\",\"), i = t10.map((h, g) => h[0] + e[g]).join(\",\"), p = Et(\"rc\", n), u = Et(\"source\", n), c = `${p[n - 1]} < ${this.outputShape[n - 1]}`, l = n === 1 ? \"source\" : `vec2(${u.slice(-2).join()})`, m = [`${s} rc = outputLoc;`, `${p[n - 1]} += 1;\n if(${c}) {\n `, n === 1 ? \"\" : `}\n rc = outputLoc;\n ${p[n - 2]} += 1;\n if(${p[n - 2]} < ${this.outputShape[n - 2]}) {`, n === 1 ? \"\" : ` ${p[n - 1]} += 1;\n if(${c}) {`], d = n === 1 ? \"rc < start || rc >= end\" : \"any(lessThan(rc, start)) || any(greaterThanEqual(rc, end))\", f = \"\";\n for (let h = 0, g = n === 1 ? 2 : 4; h < g; h++)\n f += `\n ${m[h]}\n if (${d}) {\n result[${h}] = float(value);\n } else {\n ${s} source = rc - start;\n result[${h}] = getChannel(getX(${u.join()}), ${l});\n }\n `;\n f += n === 1 ? \"} \" : \"}}\", this.userCode = `\n const ${s} start = ${s}(${a});\n const ${s} end = ${s}(${i});\n\n void main() {\n ${s} outputLoc = getOutputCoords();\n vec4 result = vec4(0.);\n ${f}\n setOutput(result);\n }\n `;\n }\n};\nvar Xw = (r) => {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { paddings: s, constantValue: a } = o;\n if (y.sizeFromShape(n.shape) === 0) {\n let u = s.map((c, l) => c[0] + n.shape[l] + c[1]);\n return qa({ backend: t10, attrs: { shape: u, value: a, dtype: n.dtype } });\n }\n let i = O().getBool(\"WEBGL_PACK_ARRAY_OPERATIONS\") ? new eg(n.shape, s, a) : new Jh(n.shape, s, a), p = [[a]];\n return t10.runWebGLProgram(i, [n], n.dtype, p);\n};\nvar bD = { kernelName: En, backendName: \"webgl\", kernelFunc: Xw };\nvar Y7 = `\n if(a < 0.0 && floor(b) < b){\n return NAN;\n }\n if (b == 0.0) {\n return 1.0;\n }\n return (round(mod(b, 2.0)) != 1) ?\n pow(abs(a), b) : sign(a) * pow(abs(a), b);\n`;\nvar Q7 = `\n // isModRound1 has 1 for components with round(mod(b, 2.0)) == 1, 0 otherwise.\n vec4 isModRound1 = vec4(equal(round(mod(b, 2.0)), ivec4(1)));\n vec4 multiplier = sign(a) * isModRound1 + (vec4(1.0) - isModRound1);\n vec4 result = multiplier * pow(abs(a), b);\n\n // Ensure that a^0 = 1, including 0^0 = 1 as this correspond to TF and JS\n bvec4 isExpZero = equal(b, vec4(0.0));\n result.r = isExpZero.r ? 1.0 : result.r;\n result.g = isExpZero.g ? 1.0 : result.g;\n result.b = isExpZero.b ? 1.0 : result.b;\n result.a = isExpZero.a ? 1.0 : result.a;\n\n bvec4 isNaN1 = lessThan(a, vec4(0.0));\n bvec4 isNaN2 = lessThan(floor(b), b);\n bvec4 isNaN = bvec4(isNaN1.x && isNaN2.x, isNaN1.y && isNaN2.y, isNaN1.z && isNaN2.z, isNaN1.w && isNaN2.w);\n ` + Js + `\n return result;\n`;\nvar Z7 = tt({ opSnippet: Y7, packedOpSnippet: Q7 });\nvar CD = { kernelName: An, backendName: \"webgl\", kernelFunc: Z7 };\nfunction J7(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s, keepDims: a } = o, i = n.shape.length, p = [], u = y.parseAxisParam(s, n.shape), c = u, l = S.getAxesPermutation(c, i), m = n;\n l != null && (m = yt({ inputs: { x: n }, backend: t10, attrs: { perm: l } }), c = S.getInnerMostAxes(c.length, i), p.push(m)), S.assertAxesAreInnerMostDims(\"prod\", c, i);\n let d;\n if (t10.shouldExecuteOnCPU([m])) {\n let f = t10.texData.get(m.dataId).values, { outVals: h, outShape: g, outDtype: x } = pE(m.shape, m.dtype, f, c);\n d = t10.makeTensorInfo(g, x, h);\n } else {\n let [f, h] = S.computeOutAndReduceShapes(m.shape, c), g = y.sizeFromShape(h), x = re({ inputs: { x: m }, backend: t10, attrs: { shape: [-1, g] } }), b = Ta(n.dtype), C = Ur(x, b, \"prod\", t10);\n d = re({ inputs: { x: C }, backend: t10, attrs: { shape: f } }), p.push(x), p.push(C);\n }\n if (a) {\n p.push(d);\n let f = S.expandShapeToKeepDim(d.shape, u);\n d = re({ inputs: { x: d }, backend: t10, attrs: { shape: f } });\n }\n return p.forEach((f) => t10.disposeIntermediateTensorInfo(f)), d;\n}\nvar SD = { kernelName: Dn, backendName: \"webgl\", kernelFunc: J7 };\nfunction eZ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { paramsNestedSplits: n, paramsDenseValues: s, indices: a } = e, { outputRaggedRank: i } = o, p = n.map((x) => t10.readSync(x.dataId)), u = n.map((x) => x.shape), c = t10.readSync(s.dataId), l = t10.readSync(a.dataId), [m, d, f] = cE(p, u, c, s.shape, s.dtype, l, a.shape, i), h = m.map((x) => t10.makeTensorInfo([x.length], \"int32\", x)), g = t10.makeTensorInfo(f, s.dtype, d);\n return h.concat([g]);\n}\nvar wD = { kernelName: Ip, backendName: \"webgl\", kernelFunc: eZ };\nfunction tZ(r) {\n let { inputs: e, backend: t10 } = r, { starts: o, limits: n, deltas: s } = e, a = t10.readSync(o.dataId), i = t10.readSync(n.dataId), p = t10.readSync(s.dataId), [u, c] = lE(a, o.shape, o.dtype, i, n.shape, p, s.shape), l = t10.makeTensorInfo([u.length], \"int32\", u), m = t10.makeTensorInfo([c.length], o.dtype, c);\n return [l, m];\n}\nvar ID = { kernelName: vp, backendName: \"webgl\", kernelFunc: tZ };\nfunction rZ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { shape: n, values: s, defaultValue: a, rowPartitionTensors: i } = e, { rowPartitionTypes: p } = o, u = t10.readSync(n.dataId), c = t10.readSync(s.dataId), l = t10.readSync(a.dataId), m = i.map((g) => t10.readSync(g.dataId)), d = i.map((g) => g.shape), [f, h] = mE(u, n.shape, c, s.shape, s.dtype, l, a.shape, m, d, p);\n return t10.makeTensorInfo(f, s.dtype, h);\n}\nvar vD = { kernelName: kp, backendName: \"webgl\", kernelFunc: rZ };\nvar Yw = (r) => {\n let { backend: e, attrs: t10 } = r, { start: o, stop: n, step: s, dtype: a } = t10, i = dE(o, n, s, a);\n return e.makeTensorInfo([i.length], a, i);\n};\nvar kD = { kernelName: Ts, backendName: \"webgl\", kernelFunc: Yw };\nvar oZ = \"return 1.0 / x;\";\nvar nZ = he({ opSnippet: oZ });\nvar ND = { kernelName: Fn, backendName: \"webgl\", kernelFunc: nZ };\nvar sZ = zt + `\n return (x < 0.0) ? 0.0 : x;\n`;\nvar aZ = `\n vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0)));\n bvec4 isNaN = isnan(x);\n\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n`;\nvar iZ = he({ opSnippet: sZ, packedOpSnippet: aZ });\nvar TD = { kernelName: On, backendName: \"webgl\", kernelFunc: iZ };\nvar uZ = zt + `\n return (x < 0.0) ? 0.0 : min(6.0, x);\n`;\nvar pZ = `\n vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0)));\n bvec4 isNaN = isnan(x);\n\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n`;\nvar cZ = he({ opSnippet: uZ, packedOpSnippet: pZ });\nvar _D = { kernelName: Ln, backendName: \"webgl\", kernelFunc: cZ };\nvar tg = class {\n constructor(e, t10, o, n, s) {\n this.variableNames = [\"A\"], this.outputShape = [];\n let [a, i, p, u] = e;\n this.outputShape = [a, t10, o, u];\n let c = [n && t10 > 1 ? i - 1 : i, n && o > 1 ? p - 1 : p], l = [n && t10 > 1 ? t10 - 1 : t10, n && o > 1 ? o - 1 : o], m;\n s ? m = \"(vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC - vec2(0.5)\" : m = \"vec2(yRC) * effectiveInputOverOutputRatioRC\", this.userCode = `\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n ${c[0] / l[0]},\n ${c[1] / l[1]});\n const vec2 inputShapeRC = vec2(${i}.0, ${p}.0);\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n ivec2 yRC = coords.yz;\n\n // Fractional source index.\n vec2 sourceFracIndexRC = ${m};\n\n // Compute the four integer indices.\n ivec2 sourceFloorRC = ivec2(max(sourceFracIndexRC, vec2(0.0)));\n ivec2 sourceCeilRC = ivec2(\n min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\n\n float topLeft = getA(b, sourceFloorRC.x, sourceFloorRC.y, d);\n float bottomLeft = getA(b, sourceCeilRC.x, sourceFloorRC.y, d);\n float topRight = getA(b, sourceFloorRC.x, sourceCeilRC.y, d);\n float bottomRight = getA(b, sourceCeilRC.x, sourceCeilRC.y, d);\n\n vec2 fracRC = sourceFracIndexRC - vec2(sourceFloorRC);\n\n float top = topLeft + (topRight - topLeft) * fracRC.y;\n float bottom = bottomLeft + (bottomRight - bottomLeft) * fracRC.y;\n float newValue = top + (bottom - top) * fracRC.x;\n\n setOutput(newValue);\n }\n `;\n }\n};\nvar rg = class {\n constructor(e, t10, o, n, s) {\n this.variableNames = [\"A\"], this.packedInputs = true, this.packedOutput = true, this.outputShape = [];\n let [a, i, p, u] = e;\n this.outputShape = [a, t10, o, u];\n let c = [n && t10 > 1 ? i - 1 : i, n && o > 1 ? p - 1 : p], l = [n && t10 > 1 ? t10 - 1 : t10, n && o > 1 ? o - 1 : o], m;\n s ? m = \"(vec3(yRC) + vec3(0.5)) * effectiveInputOverOutputRatioRC - vec3(0.5)\" : m = \"vec3(yRC) * effectiveInputOverOutputRatioRC\", this.userCode = `\n const vec3 effectiveInputOverOutputRatioRC = vec3(\n ${c[0] / l[0]},\n ${c[1] / l[1]},\n ${c[1] / l[1]});\n const vec3 inputShapeRC = vec3(${i}.0, ${p}.0,\n ${p}.0);\n\n float getAValue(int b, int r, int c, int d) {\n return getChannel(getA(b, r, c, d), vec2(c, d));\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n // Calculate values for next column in yRC.z.\n ivec3 yRC = coords.yzz + ivec3(0, 0, 1);\n\n // Fractional source index.\n vec3 sourceFracIndexRC = ${m};\n\n // Compute the four integer indices.\n ivec3 sourceFloorRC = ivec3(max(sourceFracIndexRC, vec3(0.0)));\n ivec3 sourceCeilRC = ivec3(\n min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\n\n // Should we calculate next column and row elements in 2x2 packed cell.\n bool hasNextCol = d < ${u - 1};\n bool hasNextRow = coords.z < ${o - 1};\n\n // In parallel, construct four corners for all four components in\n // packed 2x2 cell.\n vec4 topLeft = vec4(\n getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d),\n hasNextCol ? getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d + 1) : 0.0);\n\n vec4 bottomLeft = vec4(\n getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d),\n hasNextCol ? getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d + 1) : 0.0);\n\n vec4 topRight = vec4(\n getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d),\n hasNextCol ? getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d + 1) : 0.0);\n\n vec4 bottomRight = vec4(\n getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d),\n hasNextCol ? getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d + 1) : 0.0);\n\n vec3 fracRC = sourceFracIndexRC - vec3(sourceFloorRC);\n\n vec4 top = mix(topLeft, topRight, fracRC.yyzz);\n vec4 bottom = mix(bottomLeft, bottomRight, fracRC.yyzz);\n vec4 newValue = mix(top, bottom, fracRC.x);\n\n setOutput(newValue);\n }\n `;\n }\n};\nfunction lZ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { images: n } = e, { alignCorners: s, halfPixelCenters: a, size: i } = o, [p, u] = i, c = O().getBool(\"WEBGL_PACK_IMAGE_OPERATIONS\") ? new rg(n.shape, p, u, s, a) : new tg(n.shape, p, u, s, a);\n return t10.runWebGLProgram(c, [n], \"float32\");\n}\nvar $D = { kernelName: Mn, backendName: \"webgl\", kernelFunc: lZ };\nvar og = class {\n constructor(e, t10, o) {\n this.variableNames = [\"dy\"], this.outputShape = [], this.outputShape = t10;\n let [, n, s] = t10, [, a, i] = e, p = [o && a > 1 ? n - 1 : n, o && i > 1 ? s - 1 : s], u = [o && a > 1 ? a - 1 : a, o && i > 1 ? i - 1 : i], c = p[0] / u[0], l = p[1] / u[1], m = 1 / c, d = 1 / l, f = Math.ceil(m) * 2 + 2, h = Math.ceil(d) * 2 + 2;\n this.userCode = `\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n int r = coords[1];\n int c = coords[2];\n\n float accumulator = 0.0;\n\n const float heightScale = float(${c});\n const float widthScale = float(${l});\n\n const float invHeightScale = float(${m});\n const float invWidthScale = float(${d});\n\n const int winHeight = int(${f});\n const int winWidth = int(${h});\n\n // Compute bounds for where in dy we will look\n float startRLerp = floor(float(r) * invHeightScale);\n int startDyR = int(startRLerp - float(winHeight / 2));\n\n float startCLerp = floor(float(c) * invWidthScale);\n int startDyC = int(startCLerp - float(winWidth / 2));\n\n // Loop over dy\n for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n int dyR = dyROffset + startDyR;\n\n // Guard against the window exceeding the bounds of dy\n if (dyR < 0 || dyR >= ${a}) {\n continue;\n }\n\n for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n int dyC = dyCOffset + startDyC;\n\n // Guard against the window exceeding the bounds of dy\n if (dyC < 0 || dyC >= ${i}) {\n continue;\n }\n\n float dxR = float(dyR) * heightScale;\n int topDxRIndex = int(floor(dxR));\n int bottomDxRIndex = int(min(ceil(dxR), ${n - 1}.0));\n float dxRLerp = dxR - float(topDxRIndex);\n float inverseDxRLerp = 1.0 - dxRLerp;\n\n float dxC = float(dyC) * widthScale;\n int leftDxCIndex = int(floor(dxC));\n int rightDxCIndex = int(min(ceil(dxC), ${s - 1}.0));\n float dxCLerp = dxC - float(leftDxCIndex);\n float inverseDxCLerp = 1.0 - dxCLerp;\n\n if (r == topDxRIndex && c == leftDxCIndex) {\n // topLeft\n accumulator +=\n getDy(b, dyR, dyC, d) * inverseDxRLerp * inverseDxCLerp;\n }\n\n if (r == topDxRIndex && c == rightDxCIndex) {\n // topRight\n accumulator += getDy(b, dyR, dyC, d) * inverseDxRLerp * dxCLerp;\n }\n\n if (r == bottomDxRIndex && c == leftDxCIndex) {\n // bottomLeft\n accumulator += getDy(b, dyR, dyC, d) * dxRLerp * inverseDxCLerp;\n }\n\n if (r == bottomDxRIndex && c == rightDxCIndex) {\n // bottomRight\n accumulator += getDy(b, dyR, dyC, d) * dxRLerp * dxCLerp;\n }\n }\n }\n // End loop over dy\n\n setOutput(accumulator);\n }\n `;\n }\n};\nfunction mZ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { images: n, dy: s } = e, { alignCorners: a } = o, i = new og(s.shape, n.shape, a);\n return t10.runWebGLProgram(i, [s], s.dtype);\n}\nvar ED = { kernelName: Am, backendName: \"webgl\", kernelFunc: mZ };\nvar ng = class {\n constructor(e, t10, o, n, s) {\n this.variableNames = [\"A\"], this.outputShape = [];\n let [a, i, p, u] = e;\n this.outputShape = [a, t10, o, u];\n let c = [n && t10 > 1 ? i - 1 : i, n && o > 1 ? p - 1 : p], l = [n && t10 > 1 ? t10 - 1 : t10, n && o > 1 ? o - 1 : o], m = n ? \"0.5\" : \"0.0\", d;\n s ? d = \"max((vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC, vec2(0.0))\" : d = \"vec2(yRC) * effectiveInputOverOutputRatioRC\", this.userCode = `\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n ${c[0] / l[0]},\n ${c[1] / l[1]});\n const vec2 inputShapeRC = vec2(${i}.0, ${p}.0);\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n ivec2 yRC = coords.yz;\n\n // Fractional source index.\n vec2 sourceFracIndexRC = ${d};\n\n // Compute the coordinators of nearest neighbor point.\n ivec2 sourceNearestRC = ivec2(\n min(inputShapeRC - 1.0, floor(sourceFracIndexRC + ${m})));\n float newValue = getA(b, sourceNearestRC.x, sourceNearestRC.y, d);\n\n setOutput(newValue);\n }\n `;\n }\n};\nvar sg = class {\n constructor(e, t10, o, n, s) {\n this.variableNames = [\"A\"], this.packedInputs = true, this.packedOutput = true, this.outputShape = [];\n let [a, i, p, u] = e;\n this.outputShape = [a, t10, o, u];\n let c = [n && t10 > 1 ? i - 1 : i, n && o > 1 ? p - 1 : p], l = [n && t10 > 1 ? t10 - 1 : t10, n && o > 1 ? o - 1 : o], m = n ? \"0.5\" : \"0.0\", d;\n s ? d = \"max((vec3(yRC) + vec3(0.5)) * effectiveInputOverOutputRatioRC, vec3(0.0))\" : d = \"vec3(yRC) * effectiveInputOverOutputRatioRC\", this.userCode = `\n const vec3 effectiveInputOverOutputRatioRC = vec3(\n ${c[0] / l[0]},\n ${c[1] / l[1]},\n ${c[1] / l[1]});\n const vec3 inputShapeRC = vec3(${i}.0, ${p}.0,\n ${p}.0);\n\n float getAValue(int b, int r, int c, int d) {\n return getChannel(getA(b, r, c, d), vec2(c, d));\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n // Calculate values for next column in yRC.z.\n ivec3 yRC = coords.yzz + ivec3(0, 0, 1);\n\n // Fractional source index.\n vec3 sourceFracIndexRC = ${d};\n\n // Compute the coordinators of nearest neighbor point.\n ivec3 sourceNearestRC = ivec3(\n min(inputShapeRC - 1.0, floor(sourceFracIndexRC + ${m})));\n\n // Should we calculate next column and row elements in 2x2 packed cell.\n bool hasNextCol = d < ${u - 1};\n bool hasNextRow = coords.z < ${o - 1};\n\n vec4 newValue = vec4(\n getAValue(b, sourceNearestRC.x, sourceNearestRC.y, d),\n hasNextCol ? getAValue(b, sourceNearestRC.x, sourceNearestRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceNearestRC.x, sourceNearestRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceNearestRC.x, sourceNearestRC.z, d + 1) : 0.0);\n\n setOutput(newValue);\n }\n `;\n }\n};\nfunction dZ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { images: n } = e, { alignCorners: s, halfPixelCenters: a, size: i } = o, [p, u] = i, c = O().getBool(\"WEBGL_PACK_IMAGE_OPERATIONS\") ? new sg(n.shape, p, u, s, a) : new ng(n.shape, p, u, s, a);\n return t10.runWebGLProgram(c, [n], n.dtype);\n}\nvar AD = { kernelName: Pn, backendName: \"webgl\", kernelFunc: dZ };\nvar ag = class {\n constructor(e, t10, o) {\n this.variableNames = [\"dy\"], this.outputShape = [], this.outputShape = t10;\n let [, n, s] = t10, [, a, i] = e, p = [o && a > 1 ? n - 1 : n, o && i > 1 ? s - 1 : s], u = [o && a > 1 ? a - 1 : a, o && i > 1 ? i - 1 : i], c = p[0] / u[0], l = p[1] / u[1], m = 1 / c, d = 1 / l, f = Math.ceil(m) * 2 + 2, h = Math.ceil(d) * 2 + 2;\n this.userCode = `\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n int r = coords[1];\n int c = coords[2];\n\n float accumulator = 0.0;\n\n const float heightScale = float(${c});\n const float widthScale = float(${l});\n\n const float invHeightScale = float(${m});\n const float invWidthScale = float(${d});\n\n const int winHeight = int(${f});\n const int winWidth = int(${h});\n\n // Compute bounds for where in dy we will look\n float startRLerp = floor(float(r) * invHeightScale);\n int startDyR = int(floor(startRLerp - float(winHeight / 2)));\n\n float startCLerp = floor(float(c) * invWidthScale);\n int startDyC = int(floor(startCLerp - float(winWidth / 2)));\n\n // Loop over dy\n for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n int dyR = dyROffset + startDyR;\n\n // Guard against the window exceeding the bounds of dy\n if (dyR < 0 || dyR >= ${a}) {\n continue;\n }\n\n for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n int dyC = dyCOffset + startDyC;\n\n // Guard against the window exceeding the bounds of dy\n if (dyC < 0 || dyC >= ${i}) {\n continue;\n }\n\n float sourceFracRow =\n float(${p[0]}) *\n (float(dyR) / float(${u[0]}));\n\n float sourceFracCol =\n float(${p[1]}) *\n (float(dyC) / float(${u[1]}));\n\n int sourceNearestRow = int(min(\n float(int(${n}) - 1),\n ${o} ? float(round(sourceFracRow)) :\n float(floor(sourceFracRow))));\n\n int sourceNearestCol = int(min(\n float(int(${s}) - 1),\n ${o} ? float(round(sourceFracCol)) :\n float(floor(sourceFracCol))));\n\n if (r == sourceNearestRow && c == sourceNearestCol) {\n accumulator += getDy(b, dyR, dyC, d);\n }\n }\n }\n // End loop over dy\n\n setOutput(accumulator);\n }\n `;\n }\n};\nfunction fZ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { images: n, dy: s } = e, { alignCorners: a } = o, i = new ag(s.shape, n.shape, a);\n return t10.runWebGLProgram(i, [s], s.dtype);\n}\nvar RD = { kernelName: Em, backendName: \"webgl\", kernelFunc: fZ };\nvar ig = class {\n constructor(e, t10) {\n this.variableNames = [\"x\"];\n let o = e.length;\n if (o > 4)\n throw new Error(`WebGL backend: Reverse of rank-${o} tensor is not yet supported`);\n if (this.outputShape = e, o === 1) {\n this.userCode = `\n void main() {\n int coord = getOutputCoords();\n setOutput(getX(${e[0]} - coord - 1));\n }\n `;\n return;\n }\n let n = (i) => t10.indexOf(i) !== -1 && e[i] !== 1 ? `${e[i]} - coords[${i}] - 1` : `coords[${i}]`, s = e.map((i, p) => n(p)).join(\",\"), a = $e(o);\n this.userCode = `\n void main() {\n ${a} coords = getOutputCoords();\n setOutput(getX(${s}));\n }\n `;\n }\n};\nvar ug = class {\n constructor(e, t10) {\n this.variableNames = [\"x\"], this.packedInputs = true, this.packedOutput = true;\n let o = e.length;\n if (o > 4)\n throw new Error(`WebGL backend: Reverse of rank-${o} tensor is not yet supported`);\n this.outputShape = e;\n let n = Et(\"rc\", o), s = `${n[o - 1]} + 1 < ${this.outputShape[o - 1]}`, a = `${n[o - 2]} + 1 < ${this.outputShape[o - 2]}`, i = $e(o);\n o === 1 ? this.userCode = `\n void main(){\n int rc = getOutputCoords();\n vec4 result = vec4(0.);\n result.r = getChannel(getX(${e[0]} - rc - 1),\n ${e[0]} - rc - 1);\n if(${s}){\n result.g = getChannel(getX(${e[0]} - (rc + 1) - 1),\n ${e[0]} - (rc + 1) - 1);\n }\n setOutput(result);\n }\n ` : this.userCode = `\n void main() {\n ${i} rc = getOutputCoords();\n vec4 result = vec4(0.);\n result.r = ${p(n.slice())};\n if(${s}){\n result.g = ${u(n.slice())};\n }\n if(${a}) {\n result.b = ${c(n.slice())};\n if(${s}) {\n result.a = ${l(n.slice())};\n }\n }\n setOutput(result);\n }\n `;\n function p(f) {\n return m(f);\n }\n function u(f) {\n return f[o - 1] = \"(\" + f[o - 1] + \" + 1)\", m(f);\n }\n function c(f) {\n return f[o - 2] = \"(\" + f[o - 2] + \" + 1)\", m(f);\n }\n function l(f) {\n return f[o - 1] = \"(\" + f[o - 1] + \" + 1)\", f[o - 2] = \"(\" + f[o - 2] + \" + 1)\", m(f);\n }\n function m(f) {\n let h = e.map((b, C) => d(C, f)), g = h.join(\",\"), x = h.slice(-2).join(\",\");\n return `getChannel(getX(${g}), vec2(${x}))`;\n }\n function d(f, h) {\n return t10.indexOf(f) !== -1 && e[f] !== 1 ? `${e[f]} - ${h[f]} - 1` : `${h[f]}`;\n }\n }\n};\nfunction hZ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { dims: s } = o, a = n.shape.length, i = y.parseAxisParam(s, n.shape);\n if (a === 0)\n return At({ inputs: { x: n }, backend: t10 });\n let p = O().getBool(\"WEBGL_PACK_ARRAY_OPERATIONS\") ? new ug(n.shape, i) : new ig(n.shape, i);\n return t10.runWebGLProgram(p, [n], n.dtype);\n}\nvar DD = { kernelName: Bn, backendName: \"webgl\", kernelFunc: hZ };\nvar pg = class {\n constructor(e, t10) {\n this.variableNames = [\"Image\"], this.outputShape = [], this.customUniforms = [{ name: \"params\", type: \"vec4\" }];\n let o = e[1], n = e[2];\n this.outputShape = e;\n let s = \"\";\n typeof t10 == \"number\" ? s = `float outputValue = ${t10.toFixed(2)};` : s = `\n vec3 fill = vec3(${t10.join(\",\")});\n float outputValue = fill[coords[3]];`, this.userCode = `\n void main() {\n ivec4 coords = getOutputCoords();\n int x = coords[2];\n int y = coords[1];\n float coordXFloat = (float(x) - params[0]) * params[3] -\n (float(y) - params[1]) * params[2];\n float coordYFloat = (float(x) - params[0]) * params[2] +\n (float(y) - params[1]) * params[3];\n int coordX = int(round(coordXFloat + params[0]));\n int coordY = int(round(coordYFloat + params[1]));\n ${s}\n if(coordX >= 0 && coordX < ${n} && coordY >= 0 && coordY < ${o}) {\n outputValue = getImage(coords[0], coordY, coordX, coords[3]);\n }\n setOutput(outputValue);\n }\n `;\n }\n};\nvar FD = { kernelName: ts, backendName: \"webgl\", kernelFunc: ({ inputs: r, attrs: e, backend: t10 }) => {\n let { image: o } = r, { radians: n, fillValue: s, center: a } = e, i = t10, p = new pg(o.shape, s), [u, c] = S.getImageCenter(a, o.shape[1], o.shape[2]), l = [[u, c, Math.sin(n), Math.cos(n)]];\n return i.runWebGLProgram(p, [o], o.dtype, l);\n} };\nvar gZ = `\n // OpenGL ES does not support round function.\n // The algorithm is based on banker's rounding.\n float base = floor(x);\n if ((x - base) < 0.5) {\n return floor(x);\n } else if ((x - base) > 0.5) {\n return ceil(x);\n } else {\n if (mod(base, 2.0) == 0.0) {\n return base;\n } else {\n return base + 1.0;\n }\n }\n`;\nvar xZ = he({ opSnippet: gZ });\nvar OD = { kernelName: Vn, backendName: \"webgl\", kernelFunc: xZ };\nvar yZ = \"return inversesqrt(x);\";\nvar bZ = he({ opSnippet: yZ, cpuKernelImpl: fE });\nvar PD = { kernelName: zn, backendName: \"webgl\", kernelFunc: bZ };\nvar Sc = class {\n constructor(e, t10, o, n, s, a, i = true) {\n this.variableNames = [\"updates\", \"indices\", \"defaultValue\"], this.outputShape = a;\n let p = $e(s.length), u = $e(a.length), c = \"\";\n o === 1 ? c = \"i\" : o === 2 && (c = \"i, j\");\n let l = `getIndices(${c})`, m = \"\";\n n === 1 ? m = \"i\" : n === 2 && (m = \"i, coords[1]\");\n let d = `getUpdates(${m})`, f = t10 > 1 ? \"strides[j]\" : \"strides\";\n this.userCode = `\n ${p} strides = ${p}(${s});\n\n void main() {\n ${u} coords = getOutputCoords();\n float sum = 0.0;\n bool found = false;\n for (int i = 0; i < ${e}; i++) {\n int flattenedIndex = 0;\n for (int j = 0; j < ${t10}; j++) {\n int index = round(${l});\n flattenedIndex += index * ${f};\n }\n if (flattenedIndex == coords[0]) {\n sum += ${d};\n found = true;\n }\n }\n setOutput(mix(getDefaultValue(), sum, float(found)));\n }\n `;\n }\n};\nfunction CZ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { indices: n, updates: s } = e, { shape: a } = o, { sliceRank: i, numUpdates: p, sliceSize: u, strides: c, outputSize: l } = S.calculateShapes(s, n, a), m = [l / u, u];\n if (l === 0)\n return t10.makeTensorInfo(a, n.dtype);\n let d = re({ inputs: { x: n }, backend: t10, attrs: { shape: [p, i] } }), f = re({ inputs: { x: s }, backend: t10, attrs: { shape: [p, u] } }), h = t10.makeTensorInfo([], \"float32\", new Float32Array([0])), g = new Sc(p, i, d.shape.length, f.shape.length, c, m), x = t10.runWebGLProgram(g, [f, d, h], f.dtype), b = re({ inputs: { x }, backend: t10, attrs: { shape: a } });\n return t10.disposeIntermediateTensorInfo(d), t10.disposeIntermediateTensorInfo(f), t10.disposeIntermediateTensorInfo(x), t10.disposeIntermediateTensorInfo(h), b;\n}\nvar MD = { kernelName: Wn, backendName: \"webgl\", kernelFunc: CZ };\nvar cg = class {\n constructor(e, t10, o, n) {\n this.variableNames = [\"sortedSequence\", \"values\"], this.customUniforms = [{ name: \"numInputs\", type: \"int\" }], this.outputShape = [e, o];\n let s = \"while (left < right) {\", a = `for (int i = 0; i < ${Math.ceil(Math.log2(t10 + 1))}; ++i) { if (left >= right) break;`, i = O().getNumber(\"WEBGL_VERSION\") === 2 ? s : a, p = n === \"left\" ? \"<\" : \"<=\";\n this.userCode = `\n int findBound(int batch, float value) {\n int left = 0;\n int right = numInputs;\n int mid;\n ${i}\n mid = (left + right) / 2;\n if (getSortedSequence(batch, mid) ${p} value) {\n left = mid + 1;\n } else {\n right = mid;\n }\n }\n return right;\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int valueIndex = coords[1];\n\n float value = getValues(batch, valueIndex);\n\n setOutput(float(findBound(batch, value)));\n }\n `;\n }\n};\nfunction SZ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { sortedSequence: n, values: s } = e, { side: a } = o, i = new cg(n.shape[0], n.shape[1], s.shape[1], a), p = [[n.shape[1]]];\n return t10.runWebGLProgram(i, [n, s], \"int32\", p);\n}\nvar LD = { kernelName: fi, backendName: \"webgl\", kernelFunc: SZ };\nvar lg = class {\n constructor(e, t10, o) {\n this.variableNames = [\"c\", \"a\", \"b\"], this.outputShape = t10;\n let n, s;\n if (o > 4)\n throw Error(`Where for rank ${o} is not yet supported`);\n if (o === 1)\n s = \"resRC\", n = \"resRC\";\n else {\n let i = [\"resRC.x\", \"resRC.y\", \"resRC.z\", \"resRC.w\"], p = [], u = [];\n for (let c = 0; c < t10.length; c++)\n u.push(`${i[c]}`), c < e && p.push(`${i[c]}`);\n n = p.join(), s = u.join();\n }\n let a = $e(o);\n this.userCode = `\n void main() {\n ${a} resRC = getOutputCoords();\n float cVal = getC(${n});\n if (cVal >= 1.0) {\n setOutput(getA(${s}));\n } else {\n setOutput(getB(${s}));\n }\n }\n `;\n }\n};\nfunction wZ(r) {\n let { inputs: e, backend: t10 } = r, { condition: o, t: n, e: s } = e, a = new lg(o.shape.length, n.shape, n.shape.length);\n return t10.runWebGLProgram(a, [o, n, s], dt(n.dtype, s.dtype));\n}\nvar BD = { kernelName: $s, backendName: \"webgl\", kernelFunc: wZ };\nvar IZ = `\n // Stable and Attracting Fixed Point (0, 1) for Normalized Weights.\n // see: https://arxiv.org/abs/1706.02515\n float scaleAlpha = ${S.SELU_SCALEALPHA};\n float scale = ${S.SELU_SCALE};\n return (x >= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0);\n`;\nvar vZ = he({ opSnippet: IZ });\nvar VD = { kernelName: Ca, backendName: \"webgl\", kernelFunc: vZ };\nvar kZ = $o + `\n return 1.0 / (1.0 + exp(-1.0 * x));\n`;\nvar NZ = `\n vec4 result = 1.0 / (1.0 + exp(-1.0 * x));\n bvec4 isNaN = isnan(x);\n\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n`;\nvar TZ = he({ opSnippet: kZ, packedOpSnippet: NZ, cpuKernelImpl: gE });\nvar zD = { kernelName: Gn, backendName: \"webgl\", kernelFunc: TZ };\nvar _Z = `\n if (isnan(x)) { return 0.0; }\n return sign(x);\n`;\nvar $Z = he({ opSnippet: _Z });\nvar WD = { kernelName: wa, backendName: \"webgl\", kernelFunc: $Z };\nvar EZ = $o + `\n return sin(x);\n`;\nvar AZ = he({ opSnippet: EZ });\nvar UD = { kernelName: Un, backendName: \"webgl\", kernelFunc: AZ };\nvar RZ = `\n float e2x = exp(x);\n return (e2x - 1.0 / e2x) / 2.0;\n`;\nvar DZ = he({ opSnippet: RZ });\nvar GD = { kernelName: Sa, backendName: \"webgl\", kernelFunc: DZ };\nvar FZ = `\n float epsilon = 1.1920928955078125e-7;\n float threshold = log(epsilon) + 2.0;\n\n bool too_large = x > -threshold;\n bool too_small = x < threshold;\n\n float result;\n float exp_x = exp(x);\n\n if (too_large){\n result = x;\n }\n else if (too_small){\n result = exp_x;\n }\n else{\n result = log(exp_x + 1.0);\n }\n return result;\n`;\nvar OZ = he({ opSnippet: FZ });\nvar HD = { kernelName: Ia, backendName: \"webgl\", kernelFunc: OZ };\nvar PZ = (r) => {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { blockShape: s, paddings: a } = o;\n y.assert(n.shape.length <= 4, () => \"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet\");\n let i = s.reduce((x, b) => x * b), p = [[0, 0]];\n p.push(...a);\n for (let x = 1 + s.length; x < n.shape.length; ++x)\n p.push([0, 0]);\n let u = [], c = Xw({ inputs: { x: n }, backend: t10, attrs: { paddings: p, constantValue: 0 } }), l = S.getReshaped(c.shape, s, i, false), m = S.getPermuted(l.length, s.length, false), d = S.getReshapedPermuted(c.shape, s, i, false), f = re({ inputs: { x: c }, backend: t10, attrs: { shape: l } }), h = yt({ inputs: { x: f }, backend: t10, attrs: { perm: m } }), g = re({ inputs: { x: h }, backend: t10, attrs: { shape: d } });\n return u.push(c), u.push(f), u.push(h), u.forEach((x) => t10.disposeIntermediateTensorInfo(x)), g;\n};\nvar KD = { kernelName: As, backendName: \"webgl\", kernelFunc: PZ };\nfunction MZ(r) {\n let { inputs: e, backend: t10 } = r, { indices: o, values: n, denseShape: s, defaultValue: a } = e;\n if (s.shape.length !== 1)\n throw new Error(`Dense shape must be a vector, saw:\n ${s.shape}`);\n if (o.shape.length !== 2)\n throw new Error(`Indices must be a matrix, saw:\n ${o.shape}`);\n if (n.shape.length !== 1)\n throw new Error(`Values must be a vector, saw:\n ${n.shape}`);\n if (a.shape.length !== 0)\n throw new Error(`Default value must be a scalar, saw:\n ${a.shape}`);\n let i = t10.readSync(o.dataId), p = t10.readSync(n.dataId), u = t10.readSync(s.dataId), c = t10.readSync(a.dataId)[0], [l, m, d, f, h] = yE(i, o.shape, o.dtype, p, n.dtype, u, c);\n return [t10.makeTensorInfo(m, o.dtype, l), t10.makeTensorInfo([m[0]], n.dtype, d), t10.makeTensorInfo([f.length], \"bool\", new Uint8Array(f.map((g) => Number(g)))), t10.makeTensorInfo([h.length], o.dtype, new Int32Array(h))];\n}\nvar qD = { kernelName: hi, backendName: \"webgl\", kernelFunc: MZ };\nfunction LZ(r) {\n let { inputs: e, backend: t10 } = r, { inputIndices: o, inputShape: n, newShape: s } = e;\n if (o.shape.length !== 2)\n throw new Error(`Input indices should be a matrix but received shape ${o.shape}`);\n if (n.shape.length !== 1)\n throw new Error(`Input shape should be a vector but received shape ${n.shape}`);\n if (s.shape.length !== 1)\n throw new Error(`Target shape should be a vector but received shape ${s.shape}`);\n let a = Array.from(t10.readSync(n.dataId)), i = t10.readSync(o.dataId), p = Array.from(t10.readSync(s.dataId)), [u, c, l] = bE(i, o.shape, o.dtype, a, p);\n return [t10.makeTensorInfo(c, o.dtype, u), t10.makeTensorInfo([l.length], s.dtype, new Int32Array(l))];\n}\nvar jD = { kernelName: va, backendName: \"webgl\", kernelFunc: LZ };\nfunction BZ(r) {\n let { inputs: e, backend: t10 } = r, { data: o, indices: n, segmentIds: s } = e;\n if (o.shape.length < 1)\n throw new Error(\"Data should be at least 1 dimensional but received scalar\");\n if (n.shape.length !== 1)\n throw new Error(`Indices should be a vector but received shape\n ${n.shape}`);\n if (s.shape.length !== 1)\n throw new Error(`Segment ids should be a vector but received shape\n ${s.shape}`);\n let a = t10.readSync(o.dataId), i = t10.readSync(n.dataId), p = t10.readSync(s.dataId), [u, c] = jf(a, o.shape, o.dtype, i, p, true);\n return t10.makeTensorInfo(c, o.dtype, u);\n}\nvar XD = { kernelName: gi, backendName: \"webgl\", kernelFunc: BZ };\nfunction VZ(r) {\n let { inputs: e, backend: t10 } = r, { data: o, indices: n, segmentIds: s } = e;\n if (o.shape.length < 1)\n throw new Error(\"Data should be at least 1 dimensional but received scalar\");\n if (n.shape.length !== 1)\n throw new Error(`Indices should be a vector but received shape\n ${n.shape}`);\n if (s.shape.length !== 1)\n throw new Error(`Segment ids should be a vector but received shape\n ${s.shape}`);\n let a = t10.readSync(o.dataId), i = t10.readSync(n.dataId), p = t10.readSync(s.dataId), [u, c] = jf(a, o.shape, o.dtype, i, p);\n return t10.makeTensorInfo(c, o.dtype, u);\n}\nvar YD = { kernelName: xi, backendName: \"webgl\", kernelFunc: VZ };\nfunction zZ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { sparseIndices: n, sparseValues: s, defaultValue: a } = e, { outputShape: i } = o, { sliceRank: p, numUpdates: u, sliceSize: c, strides: l, outputSize: m } = S.calculateShapes(s, n, i), d = false;\n if (s.dtype === \"string\") {\n let x = t10.bufferSync(n), b = t10.bufferSync(s), C = y.decodeString(t10.readSync(a.dataId)[0]), w = hE(x, b, i, m, c, u, p, l, C, d);\n return t10.makeTensorInfo(i, w.dtype, w.values);\n }\n let f = new Sc(u, p, n.shape.length, s.shape.length, l, [m, 1], d), h = t10.runWebGLProgram(f, [s, n, a], s.dtype), g = re({ inputs: { x: h }, backend: t10, attrs: { shape: i } });\n return t10.disposeIntermediateTensorInfo(h), g;\n}\nvar QD = { kernelName: yi, backendName: \"webgl\", kernelFunc: zZ };\nfunction WZ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { numOrSizeSplits: s, axis: a } = o, i = y.parseAxisParam(a, n.shape)[0], p = S.prepareSplitSize(n, s, i), u = n.shape.length, c = new Array(u).fill(0), l = n.shape.slice();\n return p.map((m) => {\n let d = [...l];\n d[i] = m;\n let f = ls({ inputs: { x: n }, backend: t10, attrs: { begin: c, size: d } });\n return c[i] += m, f;\n });\n}\nvar ZD = { kernelName: Rs, backendName: \"webgl\", kernelFunc: WZ };\nvar JD = \"return sqrt(x);\";\nvar UZ = he({ opSnippet: JD, packedOpSnippet: JD, cpuKernelImpl: CE });\nvar eF = { kernelName: Hn, backendName: \"webgl\", kernelFunc: UZ };\nvar GZ = \"return x * x;\";\nvar HZ = he({ opSnippet: GZ });\nvar tF = { kernelName: bi, backendName: \"webgl\", kernelFunc: HZ };\nvar rF = \"return (a - b) * (a - b);\";\nvar KZ = tt({ opSnippet: rF, packedOpSnippet: rF });\nvar oF = { kernelName: jn, backendName: \"webgl\", kernelFunc: KZ };\nfunction qZ({ inputs: r, attrs: e, backend: t10 }) {\n let { x: o } = r, n = zt + `\n return x > 0.0 ? 1.0 : float(${e.alpha});\n `, s = new Jt(o.shape, n);\n return t10.runWebGLProgram(s, [o], o.dtype);\n}\nvar nF = { kernelName: fo, backendName: \"webgl\", kernelFunc: qZ };\nvar mg = class {\n constructor(e, t10, o) {\n this.variableNames = [\"x\"], this.outputShape = o;\n let n = o.length, s = $e(o.length), a = $e(o.length), i = \"\";\n if (n === 1)\n i = \"coords * strides + begin\";\n else {\n let p = 0;\n i = o.map((u, c) => (p++, o.length === 1 ? `coords * strides[${c}] + begin[${c}]` : `coords[${p - 1}] * strides[${c}] + begin[${c}]`)).join(\",\");\n }\n this.userCode = `\n ${s} begin = ${s}(${e});\n ${s} strides = ${s}(${t10});\n\n void main() {\n ${a} coords = getOutputCoords();\n setOutput(getX(${i}));\n }\n `;\n }\n};\nfunction jZ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { begin: s, end: a, strides: i, beginMask: p, endMask: u, ellipsisMask: c, newAxisMask: l, shrinkAxisMask: m } = o, { finalShapeSparse: d, finalShape: f, isIdentity: h, sliceDim0: g, isSimpleSlice: x, begin: b, end: C, strides: w } = ut.sliceInfo(n.shape, s, a, i, p, u, c, l, m), k;\n if (h)\n k = re({ inputs: { x: n }, backend: t10, attrs: { shape: f } });\n else if (g || x) {\n y.assert(n.shape.length >= 1, () => `Input must have rank at least 1, got: ${n.shape.length}`);\n let E = ut.computeOutShape(b, C, w), A = ls({ inputs: { x: n }, backend: t10, attrs: { begin: b, size: E } });\n k = re({ inputs: { x: A }, backend: t10, attrs: { shape: f } }), t10.disposeIntermediateTensorInfo(A);\n } else if (t10.shouldExecuteOnCPU([n])) {\n let A = t10.readSync(n.dataId), R = le(n.shape, n.dtype, A), D = SE(d, R, w, b);\n k = t10.makeTensorInfo(f, n.dtype, D.values);\n } else {\n let A = new mg(b, w, d);\n k = t10.runWebGLProgram(A, [n], n.dtype);\n }\n let _ = re({ inputs: { x: k }, backend: t10, attrs: { shape: f } });\n return t10.disposeIntermediateTensorInfo(k), _;\n}\nvar sF = { kernelName: Xn, backendName: \"webgl\", kernelFunc: jZ };\nfunction XZ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { separator: n, nGramWidths: s, leftPad: a, rightPad: i, padWidth: p, preserveShortSequences: u } = o, { data: c, dataSplits: l } = e, m = t10.readSync(c.dataId), d = t10.readSync(l.dataId), [f, h] = wE(m, d, n, s, a, i, p, u);\n return [t10.makeTensorInfo([f.length], \"string\", f), t10.makeTensorInfo(l.shape, \"int32\", h)];\n}\nvar aF = { kernelName: Ds, backendName: \"webgl\", kernelFunc: XZ };\nfunction YZ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { skipEmpty: n } = o, { input: s, delimiter: a } = e;\n if (s.dtype !== \"string\")\n throw new Error(\"Input must be of datatype string\");\n if (s.shape.length !== 1)\n throw new Error(`Input must be a vector, got shape: ${s.shape}`);\n if (a.shape.length !== 0)\n throw new Error(`Delimiter must be a scalar, got shape: ${a.shape}`);\n let i = t10.readSync(s.dataId), p = t10.readSync(a.dataId)[0], [u, c, l] = IE(i, p, n), m = c.length;\n return [t10.makeTensorInfo([m, 2], \"int32\", u), t10.makeTensorInfo([m], \"string\", c), t10.makeTensorInfo([2], \"int32\", new Int32Array(l))];\n}\nvar iF = { kernelName: Ci, backendName: \"webgl\", kernelFunc: YZ };\nfunction QZ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { numBuckets: n } = o, { input: s } = e;\n if (s.dtype !== \"string\")\n throw new Error(\"Input must be of datatype string\");\n if (n <= 0)\n throw new Error(\"Number of buckets must be at least 1\");\n let a = t10.readSync(s.dataId), i = vE(a, n);\n return t10.makeTensorInfo(s.shape, \"int32\", i);\n}\nvar uF = { kernelName: Si, backendName: \"webgl\", kernelFunc: QZ };\nvar ZZ = \"return tan(x);\";\nvar JZ = he({ opSnippet: ZZ });\nvar pF = { kernelName: Qn, backendName: \"webgl\", kernelFunc: JZ };\nvar e9 = `\n float e2x = exp(-2.0 * abs(x));\n return sign(x) * (1.0 - e2x) / (1.0 + e2x);\n`;\nvar t9 = he({ opSnippet: e9 });\nvar cF = { kernelName: Zn, backendName: \"webgl\", kernelFunc: t9 };\nvar dg = class {\n constructor(e, t10) {\n this.variableNames = [\"A\"];\n let o = new Array(e.length);\n for (let a = 0; a < o.length; a++)\n o[a] = e[a] * t10[a];\n this.outputShape = o, this.rank = o.length;\n let n = $e(this.rank), s = r9(e);\n this.userCode = `\n void main() {\n ${n} resRC = getOutputCoords();\n setOutput(getA(${s}));\n }\n `;\n }\n};\nfunction r9(r) {\n let e = r.length;\n if (e > 5)\n throw Error(`Tile for rank ${e} is not yet supported`);\n if (e === 1)\n return `imod(resRC, ${r[0]})`;\n let t10 = [\"resRC.x\", \"resRC.y\", \"resRC.z\", \"resRC.w\", \"resRC.u\"], o = [];\n for (let n = 0; n < r.length; n++)\n o.push(`imod(${t10[n]}, ${r[n]})`);\n return o.join();\n}\nfunction Qw(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { reps: s } = o;\n if (n.dtype === \"string\" || n.shape.length > 5) {\n let p = t10.readSync(n.dataId), u = n.dtype === \"string\" ? p.map((m) => y.decodeString(m)) : p, c = le(n.shape, n.dtype, u), l = NE(c, s);\n return t10.makeTensorInfo(l.shape, l.dtype, l.values);\n }\n let a = new dg(n.shape, s);\n return t10.runWebGLProgram(a, [n], n.dtype);\n}\nvar lF = { kernelName: to, backendName: \"webgl\", kernelFunc: Qw };\nvar fg = class {\n constructor(e) {\n this.variableNames = [\"x\", \"indices\"], this.customUniforms = [{ name: \"n\", type: \"int\" }, { name: \"firstPass\", type: \"int\" }, { name: \"negativeInf\", type: \"float\" }, { name: \"dir\", type: \"int\" }, { name: \"inc\", type: \"int\" }], this.outputShape = e, this.userCode = `\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int elemIdx = coords[1];\n\n // We compare elements pair-wise within a group of size 2 * inc.\n // The comparing rule for each group alternates between ascending\n // and descending. Within each group, we compare each pair at\n // positions i and i+inc. To decide whether an element at position i\n // is x0 or x1, we mod it by 2 * inc, if the result is smaller than\n // inc, it is in the first half of the group, we denote it as x0,\n // otherwise we denote it as x1.\n // For example, as shown in the Bitonic top K paper referenced above,\n // Figure5(a) shows that element[1] is in the\n // second half of the group when group size is 2, but it is in the\n // first half of the group when group size is 4.\n\n bool isFirstInPair = imod(elemIdx, 2 * inc) < inc;\n int i = isFirstInPair ? elemIdx : elemIdx - inc;\n\n int i0 = firstPass == 1 ? i : int(getIndices(batch, i));\n int i1 = firstPass == 1 ? i + inc : int(getIndices(batch, i + inc));\n float x0 = i0 < n ? getX(batch, i0) : negativeInf;\n float x1 = i1 < n ? getX(batch, i1) : negativeInf;\n\n // Denotes which direction indices are in (ascending or descending).\n bool reverse = imod(elemIdx, 2 * dir) >= dir;\n bool isGreater = x0 > x1 || (x0 == x1 && i1 > i0);\n if (reverse == isGreater) { // Elements in opposite order of direction\n int iTemp = i0;\n i0 = i1;\n i1 = iTemp;\n }\n if (isFirstInPair) {\n setOutput(float(i0));\n } else {\n setOutput(float(i1));\n }\n }\n `;\n }\n};\nvar hg = class {\n constructor(e) {\n this.variableNames = [\"x\", \"indices\"], this.customUniforms = [{ name: \"n\", type: \"int\" }, { name: \"firstPass\", type: \"int\" }, { name: \"k\", type: \"int\" }], this.outputShape = e, this.userCode = `\n void main() {\n // Takes max of indices (0, k), (1, k + 1), (2, k + 2) ...\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int elemIdx = coords[1];\n\n // The output size is half of the previous size.\n // If the previous sequence is | | | | _ _ _ _ | | | | _ _ _ _ (k=4),\n // we only need to output the indices at positions |, the indices at\n // positions _ can be thrown away, see Figure5(b) After Phase 2\n // (Merge phase) in the Bitonic Top K paper referenced above.\n // For example, the paper shows we only need to output the orange bars.\n // The output sequence should look like this | | | | | | | |.\n // Because the sequence is halved, to map the output index back\n // to the previous sequence to find the corresponding value,\n // we need to double the index. When we double the index,\n // we basically interpolate a position, so 2i looks like\n // | _ | _ | _ | _ | _ | _ | _. We move the | to the first k position\n // of each 2k positions by - elemIdx % k. E.g. for output at\n // index 4,5,6,7, we want to get the corresponding element at\n // original index 8,9,10,11, for output at index 8,9,10,11,\n // we want to get the corresponding element at original index\n // 16,17,18,19, so on and so forth.\n\n int i = elemIdx < k ? elemIdx : (elemIdx * 2 - imod(elemIdx, k));\n int i0 = firstPass == 1 ? i : int(getIndices(batch, i));\n int i1 = firstPass == 1 ? i + k : int(getIndices(batch, i + k));\n\n float x0 = getX(batch, i0);\n float x1 = i1 < n ? getX(batch, i1) : x0;\n\n setOutput(x0 >= x1 ? float(i0) : float(i1));\n }\n `;\n }\n};\nfunction Gu(r, e) {\n e !== null && r.disposeIntermediateTensorInfo(e);\n}\nfunction mF(r) {\n let e = 1;\n for (; e < r; )\n e *= 2;\n return e;\n}\nfunction o9(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { k: s, sorted: a } = o, i = O().getNumber(\"TOPK_LAST_DIM_CPU_HANDOFF_SIZE_THRESHOLD\"), p = O().getNumber(\"TOPK_K_CPU_HANDOFF_THRESHOLD\"), u = n.shape, c = u[u.length - 1];\n if (t10.shouldExecuteOnCPU([n]) || c < i || s > p) {\n let D = t10.readSync(n.dataId), [P, M] = TE(D, u, n.dtype, s, a);\n return [t10.makeTensorInfo(P.shape, P.dtype, P.values), t10.makeTensorInfo(M.shape, M.dtype, M.values)];\n }\n if (s === 0)\n return u[u.length - 1] = 0, [t10.makeTensorInfo(u, n.dtype, []), t10.makeTensorInfo(u, \"int32\", [])];\n if (c === 1)\n return [n, qa({ attrs: { shape: u, dtype: \"int32\", value: 0 }, backend: t10 })];\n let l = t10.texData.get(n.dataId), m = l !== null && l.isPacked, d = m ? t10.unpackTensor(n) : n, h = y.sizeFromShape(u) / c, g = re({ inputs: { x: d }, attrs: { shape: [h, c] }, backend: t10 });\n m && Gu(t10, d);\n let x = mF(s), b = mF(c), C = null, w = () => C === null ? [g, g] : [g, C], k = (D, P, M) => {\n let L = w(), V = new fg(M), U = [[c], [C === null ? 1 : 0], [Number.NEGATIVE_INFINITY], [D], [P]], K = C;\n C = t10.runWebGLProgram(V, L, \"int32\", U), Gu(t10, K);\n };\n for (let D = 1; D < x; D *= 2) {\n let P = D * 2;\n for (let M = D; M >= 1; M /= 2)\n k(P, M, [h, b]);\n }\n for (let D = b; D > x; D /= 2) {\n let P = w(), M = new hg([h, D / 2]), V = [[c], [C === null ? 1 : 0], [x]], z = C;\n C = t10.runWebGLProgram(M, P, \"int32\", V), Gu(t10, z);\n let U = x / 2, K = U * 2;\n for (let H = U; H >= 1; H /= 2)\n k(K, H, C.shape);\n }\n let _ = C;\n C = ls({ inputs: { x: C }, backend: t10, attrs: { begin: 0, size: [h, s] } }), Gu(t10, _);\n let E = Gw({ inputs: { x: g, indices: C }, backend: t10, attrs: { axis: 1, batchDims: 1 } });\n Gu(t10, g);\n let A = u.slice(0, -1);\n A.push(s), _ = C, C = re({ inputs: { x: C }, attrs: { shape: A }, backend: t10 }), Gu(t10, _);\n let R = E;\n return E = re({ inputs: { x: E }, attrs: { shape: A }, backend: t10 }), Gu(t10, R), [E, C];\n}\nvar dF = { kernelName: Jn, backendName: \"webgl\", kernelFunc: o9 };\nvar gg = class {\n constructor(e, t10, o, n, s, a) {\n this.variableNames = [\"Image\", \"Transforms\"], this.outputShape = a;\n let i = o === \"nearest\" ? 1 : 2, p;\n switch (n) {\n case \"constant\":\n p = 1;\n break;\n case \"reflect\":\n p = 2;\n break;\n case \"wrap\":\n p = 3;\n break;\n case \"nearest\":\n p = 4;\n break;\n default:\n p = 1;\n break;\n }\n this.userCode = `\n float mapCoord(float outCoord, float len) {\n float inCoord = outCoord;\n if(${p} == 2) {\n if (inCoord < 0.0) {\n if (len <= 1.0) {\n inCoord = 0.0;\n } else {\n float sz2 = 2.0 * len;\n if (inCoord < sz2) {\n inCoord = sz2 * float(int(float(-inCoord / sz2))) +\n inCoord;\n }\n inCoord = inCoord < -len ? inCoord + sz2 : -inCoord - 1.0;\n }\n } else if (inCoord > len - 1.0) {\n if (len <= 1.0) {\n inCoord = 0.0;\n } else {\n float sz2 = 2.0 * len;\n inCoord -= sz2 * float(int(float(inCoord / sz2)));\n if (inCoord >= len) {\n inCoord = sz2 - inCoord - 1.0;\n }\n }\n }\n return clamp(inCoord, 0.0, len - 1.0);\n } else if (${p} == 3) {\n if (inCoord < 0.0) {\n if (len <= 1.0) {\n inCoord = 0.0;\n } else {\n float sz = len - 1.0;\n inCoord += len * (float(int(float(-inCoord / sz))) + 1.0);\n }\n } else if (inCoord > len - 1.0) {\n if (len <= 1.0) {\n inCoord = 0.0;\n } else {\n float sz = len - 1.0;\n inCoord -= len * float(int(float(inCoord / sz)));\n }\n }\n return clamp(inCoord, 0.0, len - 1.0);\n } else if (${p} == 4) {\n return clamp(outCoord, 0.0, len - 1.0);\n } else {\n return outCoord;\n }\n }\n\n float readWithFillValue(int batch, int coordY, int coordX,\n int channel) {\n float outputValue;\n if (0 <= coordY && coordY < ${e} && 0 <= coordX && coordX < ${t10}) {\n outputValue = getImage(batch, coordY, coordX, channel);\n } else {\n outputValue = float(${s});\n }\n return outputValue;\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n float outputValue;\n int batch = coords[0];\n int x = coords[2];\n int y = coords[1];\n int channel = coords[3];\n float xf = float(x);\n float yf = float(y);\n float a1 = getTransforms(batch, 0);\n float a2 = getTransforms(batch, 1);\n float a3 = getTransforms(batch, 2);\n float b1 = getTransforms(batch, 3);\n float b2 = getTransforms(batch, 4);\n float b3 = getTransforms(batch, 5);\n float c1 = getTransforms(batch, 6);\n float c2 = getTransforms(batch, 7);\n float projection = c1 * xf + c2 * yf + 1.0;\n if (projection == 0.0) {\n outputValue = float(${s});\n } else {\n float inX = (a1 * xf + a2 * yf + a3) / projection;\n float inY = (b1 * xf + b2 * yf + b3) / projection;\n float mapX = mapCoord(inX, float(${t10}));\n float mapY = mapCoord(inY, float(${e}));\n\n if (${i} == 1) {\n int coordY = int(round(mapY));\n int coordX = int(round(mapX));\n outputValue = readWithFillValue(batch, coordY, coordX,\n channel);\n } else {\n float yFloor = floor(mapY);\n float xFloor = floor(mapX);\n float yCeil = yFloor + 1.0;\n float xCeil = xFloor + 1.0;\n float valueYFloor = (xCeil - mapX) *\n readWithFillValue(batch, int(yFloor), int(xFloor), channel) +\n (mapX - xFloor) *\n readWithFillValue(batch, int(yFloor), int(xCeil), channel);\n float valueYCeil = (xCeil - mapX) *\n readWithFillValue(batch, int(yCeil), int(xFloor), channel) +\n (mapX - xFloor) *\n readWithFillValue(batch, int(yCeil), int(xCeil), channel);\n outputValue = (yCeil - mapY) * valueYFloor +\n (mapY - yFloor) * valueYCeil;\n }\n }\n setOutput(outputValue);\n }\n `;\n }\n};\nfunction n9(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { image: n, transforms: s } = e, { interpolation: a, fillMode: i, fillValue: p, outputShape: u } = o, [c, l, m, d] = n.shape, [f, h] = u != null ? u : [l, m], g = [c, f, h, d], x = new gg(l, m, a, i, p, g);\n return t10.runWebGLProgram(x, [n, s], \"float32\");\n}\nvar fF = { kernelName: es, backendName: \"webgl\", kernelFunc: n9 };\nfunction s9(r) {\n let { inputs: e, attrs: t10, backend: o } = r, { axis: n } = t10, { x: s } = e;\n us(s, \"unique\"), console.warn(\"WARNING: \", \"UI might be locked temporarily as data is being downloaded\");\n let a = o.readSync(s.dataId), { outputValues: i, outputShape: p, indices: u } = _E(a, n, s.shape, s.dtype);\n return [o.makeTensorInfo(p, s.dtype, i), o.makeTensorInfo([u.length], \"int32\", u)];\n}\nvar hF = { kernelName: Np, backendName: \"webgl\", kernelFunc: s9 };\nfunction a9(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { value: n } = e, { axis: s } = o;\n s < 0 && (s += n.shape.length);\n let a = n, i = a.shape.length, p = n.shape[s], u = new Array(i - 1), c = 0;\n for (let h = 0; h < i; h++)\n h !== s && (u[c++] = a.shape[h]);\n let l = [], m = new Array(i).fill(0), d = a.shape.slice();\n d[s] = 1;\n let f = new Array(p);\n for (let h = 0; h < f.length; h++) {\n m[s] = h;\n let g = ls({ inputs: { x: a }, backend: t10, attrs: { begin: m, size: d } }), x = re({ inputs: { x: g }, backend: t10, attrs: { shape: u } });\n f[h] = x, l.push(g);\n }\n return l.forEach((h) => t10.disposeIntermediateTensorInfo(h)), f;\n}\nvar gF = { kernelName: Fs, backendName: \"webgl\", kernelFunc: a9 };\nvar xg = class {\n constructor(e, t10) {\n this.variableNames = [\"x\", \"segmentIds\"];\n let o = e.windowSize, n = e.batchSize, s = e.inSize, a = e.numSegments, i = a * Math.ceil(s / o);\n this.outputShape = [n, i];\n let p = \"0.0\", u = \"sumValue\", c = Math.floor(o / 4) * 4, l = o % 4, m = `\n sumValue += dot(values, segFilter);\n `, d = \"\";\n s % o > 0 && (d = `\n if (inIdx < 0 || inIdx >= ${s}) {\n return initializationValue;\n }\n `);\n let f = \"\";\n s % o > 0 && (f = `\n if (inIdx < 0 || inIdx >= ${s}) {\n return -1.0;\n }\n `), this.userCode = `\n const float initializationValue = ${p};\n\n float getValue(int batch, int inIdx) {\n ${d}\n return getX(batch, inIdx);\n }\n\n float getSegmentIdAtIndex(int inIdx) {\n ${f}\n return getSegmentIds(inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = int(floor(float(outIdx) / float(\n ${a})) * float(${o}));\n int currentSeg = int(mod(float(outIdx), float(${a})));\n\n float sumValue = 0.0;\n\n for (int i = 0; i < ${c}; i += 4) {\n int inIdx = inOffset + i;\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 3)) == currentSeg ? 1 : 0\n );\n\n ${m}\n }\n\n int inIdx = inOffset + ${c};\n if (${l === 1}) {\n vec4 values = vec4(\n getValue(batch, inIdx),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n int inIdxSeg = int(getSegmentIdAtIndex(inIdx));\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n 0,\n 0,\n 0\n );\n\n ${m}\n } else if (${l === 2}) {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n initializationValue,\n initializationValue\n );\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n 0,\n 0\n );\n\n ${m}\n } else if (${l === 3}) {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n initializationValue\n );\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n 0\n );\n\n ${m}\n }\n setOutput(${u});\n }\n `;\n }\n};\nfunction i9(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, segmentIds: s } = e, { numSegments: a } = o, i = n.shape.length, p = [], u = 0, c = S.getAxesPermutation([u], i), l = n;\n c != null && (l = yt({ inputs: { x: n }, backend: t10, attrs: { perm: c } }), p.push(l), u = S.getInnerMostAxes(1, i)[0]);\n let m = S.segment_util.computeOutShape(l.shape, u, a), d = y.sizeFromShape([l.shape[u]]), f = re({ inputs: { x: l }, backend: t10, attrs: { shape: [-1, d] } });\n p.push(f);\n let h = Ta(n.dtype), g = (w, k, _, E, A) => {\n let R = w.shape[0], D = w.shape[1], P = S.segment_util.segOpComputeOptimalWindowSize(D, A), M = { windowSize: P, inSize: D, batchSize: R, numSegments: A }, L = new xg(M, k), V = t10.compileAndRun(L, [w, _], E);\n if (p.push(V), V.shape[1] === A)\n return V;\n let z = Yw({ backend: t10, attrs: { start: 0, stop: A, step: 1, dtype: \"float32\" } }), U = Qw({ inputs: { x: z }, backend: t10, attrs: { reps: [D / P] } });\n return p.push(z), p.push(U), g(V, k, U, E, A);\n }, x = g(f, \"unsortedSegmentSum\", s, h, a), b = re({ inputs: { x }, backend: t10, attrs: { shape: m } }), C = b;\n if (c != null) {\n p.push(b);\n let w = S.getUndoAxesPermutation(c);\n C = yt({ inputs: { x: C }, backend: t10, attrs: { perm: w } });\n }\n return p.forEach((w) => t10.disposeIntermediateTensorInfo(w)), C;\n}\nvar xF = { kernelName: Tp, backendName: \"webgl\", kernelFunc: i9 };\nvar u9 = [rA, nA, sA, aA, uA, pA, cA, lA, fA, hA, gA, xA, yA, bA, CA, SA, wA, IA, vA, kA, NA, _A, $A, EA, FA, PA, MA, KE, BA, zA, WA, UA, GA, HA, KA, qA, jA, XA, YA, JA, eR, tR, rR, oR, nR, sR, aR, iR, uR, pR, cR, lR, mR, dR, fR, gR, xR, yR, bR, SR, wR, IR, vR, kR, NR, TR, _R, $R, HE, ER, VA, AR, RR, DR, qE, FR, OR, PR, MR, LR, BR, VR, zR, WR, UR, HR, KR, qR, jR, XR, YR, ZR, eD, tD, rD, oD, nD, pD, YE, cD, lD, mD, dD, AA, fD, xD, yD, bD, CD, jE, SD, wD, ID, vD, kD, RA, sD, ND, TD, _D, ZE, $D, ED, AD, RD, DD, FD, OD, PD, MD, LD, BD, VD, zD, WD, UD, GD, TA, uD, HD, KD, qD, jD, XD, YD, QD, ZD, eF, tF, oF, nF, sF, aF, iF, uF, iD, eA, pF, cF, lF, dF, fF, tA, hF, gF, xF, hD];\nfor (let r of u9)\n ka(r);\nvar Fe;\n(function(r) {\n r[r.float32 = 0] = \"float32\", r[r.int32 = 1] = \"int32\", r[r.bool = 2] = \"bool\", r[r.string = 3] = \"string\", r[r.complex64 = 4] = \"complex64\";\n})(Fe || (Fe = {}));\nvar Ui;\n(function(r) {\n r[r.linear = 0] = \"linear\", r[r.relu = 1] = \"relu\", r[r.relu6 = 2] = \"relu6\", r[r.prelu = 3] = \"prelu\", r[r.leakyrelu = 4] = \"leakyrelu\", r[r.sigmoid = 5] = \"sigmoid\", r[r.elu = 6] = \"elu\";\n})(Ui || (Ui = {}));\nvar yF;\nfunction p9(r) {\n yF = r.wasm.cwrap(ho, null, [\"number\", \"array\", \"number\", \"number\", \"array\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\"]);\n}\nfunction c9(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { a: n, b: s, bias: a, preluActivationWeights: i } = e;\n if (n.dtype !== \"float32\" || s.dtype !== \"float32\")\n throw new Error(\"_FusedMatMul for non non-float32 tensors not yet supported.\");\n let { transposeA: p, transposeB: u, activation: c, leakyreluAlpha: l } = o, m = t10.dataIdMap.get(n.dataId).id, d = t10.dataIdMap.get(s.dataId).id, f = 0;\n if (a != null) {\n let A = t10.dataIdMap.get(a.dataId);\n if (A.shape.length !== 1)\n throw new Error(`_FusedMatMul only supports rank-1 bias but got rank ${A.shape.length}.`);\n f = A.id;\n }\n let h = i == null ? 0 : t10.dataIdMap.get(i.dataId).id, g = Ui[c];\n if (g == null)\n throw new Error(`${c} activation not yet supported for FusedConv2D in the wasm backend.`);\n let x = p ? n.shape[2] : n.shape[1], b = u ? s.shape[1] : s.shape[2], C = yr.assertAndGetBroadcastShape(n.shape.slice(0, -2), s.shape.slice(0, -2)), w = t10.makeOutput([...C, x, b], n.dtype), k = t10.dataIdMap.get(w.dataId).id, _ = new Uint8Array(new Int32Array(n.shape).buffer), E = new Uint8Array(new Int32Array(s.shape).buffer);\n return yF(m, _, n.shape.length, d, E, s.shape.length, p, u, g, f, h, l || 0, k), w;\n}\nvar bF = { kernelName: ho, backendName: \"wasm\", setupFunc: p9, kernelFunc: c9 };\nfunction Ve(r, e) {\n let t10;\n function o(s) {\n t10 = s.wasm.cwrap(r, null, [\"number\", \"number\", \"number\"]);\n }\n function n(s) {\n let { backend: a, inputs: { x: i } } = s, p = a.dataIdMap.get(i.dataId).id, u = a.makeOutput(i.shape, e || i.dtype), c = a.dataIdMap.get(u.dataId).id;\n return y.sizeFromShape(u.shape) === 0 || t10(p, Fe[i.dtype], c), u;\n }\n return { kernelName: r, backendName: \"wasm\", setupFunc: o, kernelFunc: n };\n}\nvar CF = Ve(ys);\nfunction rt(r, e, t10) {\n let o;\n function n(a) {\n o = a.wasm.cwrap(r, null, [\"number\", \"array\", \"number\", \"number\", \"array\", \"number\", \"number\", \"number\"]);\n }\n function s(a) {\n let { backend: i, inputs: p } = a, { a: u, b: c } = p, l = i.dataIdMap.get(u.dataId).id, m = i.dataIdMap.get(c.dataId).id, d = t10 != null ? t10 : u.dtype, f = S.assertAndGetBroadcastShape(u.shape, c.shape), h = i.makeOutput(f, d);\n if (y.sizeFromShape(f) === 0)\n return h;\n let g = new Uint8Array(new Int32Array(u.shape).buffer), x = new Uint8Array(new Int32Array(c.shape).buffer), b = i.dataIdMap.get(h.dataId).id;\n return (() => o(l, g, u.shape.length, m, x, c.shape.length, Fe[u.dtype], b))(), h;\n }\n return { kernelName: r, backendName: \"wasm\", setupFunc: n, kernelFunc: s };\n}\nvar l9 = true;\nvar SF = rt(eo, l9);\nvar wF;\nfunction m9(r) {\n wF = r.wasm.cwrap(Po, null, [\"array\", \"number\", \"number\", \"number\"]);\n}\nfunction d9(r) {\n let { inputs: e, backend: t10 } = r, o = t10.makeOutput(e[0].shape, e[0].dtype);\n if (y.sizeFromShape(o.shape) === 0)\n return o;\n let n = e.map((i) => t10.dataIdMap.get(i.dataId).id), s = new Uint8Array(new Int32Array(n).buffer), a = t10.dataIdMap.get(o.dataId).id;\n return wF(s, n.length, Fe[o.dtype], a), o;\n}\nvar IF = { kernelName: Po, backendName: \"wasm\", setupFunc: m9, kernelFunc: d9 };\nfunction Hu(r) {\n let { inputs: { x: e }, backend: t10 } = r;\n if (e.dtype === \"string\")\n return nr(t10.readSync(e.dataId), e.shape, e.dtype);\n let o = t10.makeOutput(e.shape, e.dtype), n = t10.typedArrayFromHeap(e);\n return t10.typedArrayFromHeap(o).set(n), o;\n}\nvar vF = { kernelName: mo, backendName: \"wasm\", kernelFunc: Hu };\nvar kF;\nfunction f9(r) {\n kF = r.wasm.cwrap(ro, null, [\"number\", \"array\", \"number\", \"number\", \"number\", \"array\", \"number\"]);\n}\nfunction uo(r) {\n let { inputs: e, backend: t10, attrs: o } = r, [n, s] = g9(e.x.shape, o.perm), a = true;\n for (let f = 0; f < s.length; f++)\n s[f] !== f && (a = false);\n let i = h9(e.x.shape, o.perm), p = { dataId: e.x.dataId, shape: n, dtype: e.x.dtype };\n if (a) {\n let f = Hu({ inputs: e, backend: t10 });\n return f.shape = i, f;\n }\n let u = t10.makeOutput(i, p.dtype), c = t10.dataIdMap.get(p.dataId).id, l = t10.dataIdMap.get(u.dataId).id, m = new Uint8Array(new Int32Array(s).buffer), d = new Uint8Array(new Int32Array(p.shape).buffer);\n return kF(c, d, p.shape.length, Fe[p.dtype], l, m, s.length), u;\n}\nfunction h9(r, e) {\n let t10 = new Array(r.length);\n for (let o = 0; o < t10.length; o++)\n t10[o] = r[e[o]];\n return t10;\n}\nfunction g9(r, e) {\n let t10 = [], o = [];\n for (let n = 0; n < r.length; ++n)\n r[n] !== 1 && t10.push(r[n]), r[e[n]] !== 1 && o.push(e[n]);\n for (let n = 0; n < o.length; ++n) {\n let s = -1;\n for (let a = 0; a < o.length; ++a)\n o[a] >= n && (s === -1 || o[s] > o[a]) && (s = a);\n o[s] = n;\n }\n return [t10, o];\n}\nvar NF = { kernelName: ro, backendName: \"wasm\", kernelFunc: uo, setupFunc: f9 };\nfunction kr(r, e, t10) {\n let o = r.shape, n = r.shape.length, s = y.parseAxisParam(e, o), a = s, i = S.getAxesPermutation(a, n), p = null, u = false;\n if (i != null) {\n let c = new Array(n);\n for (let d = 0; d < c.length; d++)\n c[d] = o[i[d]];\n a = S.getInnerMostAxes(a.length, n), p = uo({ inputs: { x: r }, attrs: { perm: i }, backend: t10 });\n let l = t10.dataIdMap.get(r.dataId).id;\n t10.dataIdMap.get(p.dataId).id !== l && (u = true);\n }\n return { transposed: p, originalAxes: s, axes: a, inputWasTransposed: u };\n}\nvar TF;\nfunction x9(r) {\n TF = r.wasm.cwrap(Mo, null, [\"number, number, number\"]);\n}\nfunction y9(r) {\n let { backend: e, inputs: t10, attrs: o } = r, { axis: n, keepDims: s } = o, { x: a } = t10, p = e.dataIdMap.get(a.dataId).id, u = a, { transposed: c, axes: l, originalAxes: m, inputWasTransposed: d } = kr(a, n, e);\n if (d) {\n let C = e.dataIdMap.get(c.dataId).id;\n u = c, p = C;\n }\n let f = u.shape.length;\n S.assertAxesAreInnerMostDims(\"all\", l, f);\n let [h, g] = S.computeOutAndReduceShapes(u.shape, l), x = y.sizeFromShape(g), b = e.makeOutput(h, a.dtype);\n if (y.sizeFromShape(u.shape) !== 0) {\n let C = e.dataIdMap.get(b.dataId).id;\n TF(p, x, C);\n }\n if (d && e.disposeData(c.dataId), s) {\n let C = S.expandShapeToKeepDim(b.shape, m);\n b.shape = C;\n }\n return b;\n}\nvar _F = { kernelName: Mo, backendName: \"wasm\", setupFunc: x9, kernelFunc: y9 };\nvar $F;\nfunction b9(r) {\n $F = r.wasm.cwrap(Lo, null, [\"number, number, number\"]);\n}\nfunction C9(r) {\n let { backend: e, inputs: t10, attrs: o } = r, { axis: n, keepDims: s } = o, { x: a } = t10, p = e.dataIdMap.get(a.dataId).id, u = a, { transposed: c, axes: l, originalAxes: m, inputWasTransposed: d } = kr(a, n, e);\n if (d) {\n let C = e.dataIdMap.get(c.dataId).id;\n u = c, p = C;\n }\n let f = u.shape.length;\n S.assertAxesAreInnerMostDims(\"any\", l, f);\n let [h, g] = S.computeOutAndReduceShapes(u.shape, l), x = y.sizeFromShape(g), b = e.makeOutput(h, a.dtype);\n if (y.sizeFromShape(u.shape) !== 0) {\n let C = e.dataIdMap.get(b.dataId).id;\n $F(p, x, C);\n }\n if (d && e.disposeData(c.dataId), s) {\n let C = S.expandShapeToKeepDim(b.shape, m);\n b.shape = C;\n }\n return b;\n}\nvar EF = { kernelName: Lo, backendName: \"wasm\", setupFunc: b9, kernelFunc: C9 };\nvar AF;\nfunction S9(r) {\n AF = r.wasm.cwrap(Bo, null, [\"number\", \"number\", \"number\", \"number\", \"number\"]);\n}\nfunction w9(r) {\n let { backend: e, inputs: t10, attrs: o } = r, { axis: n } = o, { x: s } = t10, a = e.dataIdMap.get(s.dataId).id, i = a, p = s, { transposed: u, axes: c, inputWasTransposed: l } = kr(s, n, e);\n if (l) {\n let x = e.dataIdMap.get(u.dataId).id;\n x !== a && (p = u, i = x);\n }\n let m = p.shape.slice(0, -1), d = e.makeOutput(m, \"int32\"), f = e.dataIdMap.get(d.dataId).id, h = y.sizeFromShape(d.shape), g = p.shape[c[0]];\n return AF(i, Fe[p.dtype], h, g, f), l && e.disposeData(u.dataId), d;\n}\nvar RF = { kernelName: Bo, backendName: \"wasm\", kernelFunc: w9, setupFunc: S9 };\nvar DF;\nfunction I9(r) {\n DF = r.wasm.cwrap(Vo, null, [\"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\"]);\n}\nfunction v9(r) {\n let { inputs: e, attrs: t10, backend: o } = r, n = e.x, s = o.dataIdMap.get(n.dataId).id, { filterSize: a, strides: i, pad: p, dimRoundingMode: u } = t10, c = S.computePool2DInfo(n.shape, a, i, 1, p, u), l = c.filterHeight, m = c.filterWidth, d = c.padInfo.top, f = c.padInfo.right, h = c.padInfo.bottom, g = c.padInfo.left, x = c.strideHeight, b = c.strideWidth, C = c.inChannels;\n if (c.dataFormat !== \"channelsLast\")\n throw new Error(`wasm backend does not support dataFormat:'${c.dataFormat}'. Please use 'channelsLast'.`);\n if (c.dilationWidth !== 1 || c.dilationHeight !== 1)\n throw new Error(`was backend only supports average pooling with dilation = [1, 1], got [${c.dilationHeight}, ${c.dilationWidth}].`);\n let w = o.makeOutput(c.outShape, \"float32\"), k = o.dataIdMap.get(w.dataId).id;\n return DF(s, n.shape[0], n.shape[1], n.shape[2], l, m, d, f, h, g, x, b, C, k), w;\n}\nvar FF = { kernelName: Vo, backendName: \"wasm\", setupFunc: I9, kernelFunc: v9 };\nfunction Lt(r) {\n let { inputs: e, attrs: t10 } = r, { x: o } = e, { shape: n } = t10, s = y.sizeFromShape(o.shape), a = y.inferFromImplicitShape(n, s);\n return y.assert(s === y.sizeFromShape(a), () => `new shape: ${a}, old shape: ${o.shape}. New shape and old shape must have the same number of elements.`), r.backend.incRef(o.dataId), { dataId: o.dataId, shape: a, dtype: o.dtype };\n}\nvar OF = { kernelName: _s, backendName: \"wasm\", kernelFunc: Lt };\nvar PF;\nfunction k9(r) {\n PF = r.wasm.cwrap(zo, null, [\"number\", \"array\", \"number\", \"number\", \"array\", \"number\", \"number\", \"number\", \"number\"]);\n}\nfunction N9(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { a: n, b: s } = e, { transposeA: a, transposeB: i } = o;\n if (n.dtype !== \"float32\" || s.dtype !== \"float32\")\n throw new Error(\"BatchMatMul for non non-float32 tensors not yet supported.\");\n let p = n.shape.length, u = s.shape.length, c = a ? n.shape[p - 2] : n.shape[p - 1], l = i ? s.shape[u - 1] : s.shape[u - 2], m = a ? n.shape[p - 1] : n.shape[p - 2], d = i ? s.shape[u - 2] : s.shape[u - 1], f = n.shape.slice(0, -2), h = s.shape.slice(0, -2), g = y.sizeFromShape(f), x = y.sizeFromShape(h), C = yr.assertAndGetBroadcastShape(n.shape.slice(0, -2), s.shape.slice(0, -2)).concat([m, d]);\n y.assert(c === l, () => `Error in matMul: inner shapes (${c}) and (${l}) of Tensors with shapes ${n.shape} and ${s.shape} and transposeA=${a} and transposeB=${i} must match.`);\n let w = a ? [g, c, m] : [g, m, c], k = i ? [x, d, l] : [x, l, d], _ = Lt({ inputs: { x: n }, backend: t10, attrs: { shape: w } }), E = Lt({ inputs: { x: s }, backend: t10, attrs: { shape: k } }), A = t10.dataIdMap.get(_.dataId).id, R = t10.dataIdMap.get(E.dataId).id, D = a ? _.shape[2] : _.shape[1], P = i ? E.shape[1] : E.shape[2], M = Math.max(g, x), L = t10.makeOutput([M, D, P], _.dtype), V = t10.dataIdMap.get(L.dataId).id, z = new Uint8Array(new Int32Array(_.shape).buffer), U = new Uint8Array(new Int32Array(E.shape).buffer);\n return PF(A, z, _.shape.length, R, U, E.shape.length, a, i, V), t10.disposeData(_.dataId), t10.disposeData(E.dataId), L.shape = C, L;\n}\nvar MF = { kernelName: zo, backendName: \"wasm\", setupFunc: k9, kernelFunc: N9 };\nfunction Eo(r) {\n let { inputs: { x: e }, attrs: { begin: t10, size: o }, backend: n } = r, [s, a] = ut.parseSliceParams(e, t10, o), i = ut.isSliceContinous(e.shape, s, a), p = n.readSync(e.dataId), u = n.makeOutput(a, e.dtype), c = y.computeStrides(e.shape), l = n.dataIdMap.get(u.dataId);\n if (i) {\n let f = ut.computeFlatOffset(s, c);\n return e.dtype === \"string\" ? l.stringBytes = p.slice(f, f + y.sizeFromShape(a)) : n.typedArrayFromHeap(u).set(p.subarray(f, f + y.sizeFromShape(a))), u;\n }\n if (e.dtype === \"string\") {\n let f = $u(p, s, a, e.shape, e.dtype);\n return l.stringBytes = f, u;\n }\n let m = n.typedArrayFromHeap(u), d = e.shape.length;\n if (d === 2)\n T9(p, c[0], m, s, a);\n else if (d === 3)\n _9(p, c[0], c[1], m, s, a);\n else if (d === 4)\n $9(p, c[0], c[1], c[2], m, s, a);\n else {\n let f = $u(p, s, a, e.shape, e.dtype);\n m.set(f);\n }\n return u;\n}\nfunction T9(r, e, t10, o, n) {\n let s = 0, a = o[0], i = o[1], p = a + n[0];\n for (let u = a; u < p; u++) {\n let c = u * e + i;\n t10.set(r.subarray(c, c + n[1]), s), s += n[1];\n }\n}\nfunction _9(r, e, t10, o, n, s) {\n let a = 0, i = n[0], p = n[1], u = n[2], c = i + s[0], l = p + s[1];\n for (let m = i; m < c; m++)\n for (let d = p; d < l; d++) {\n let f = m * e + d * t10 + u;\n o.set(r.subarray(f, f + s[2]), a), a += s[2];\n }\n}\nfunction $9(r, e, t10, o, n, s, a) {\n let i = 0, p = s[0], u = s[1], c = s[2], l = p + a[0], m = u + a[1], d = c + a[2], f = s[3];\n for (let h = p; h < l; h++)\n for (let g = u; g < m; g++)\n for (let x = c; x < d; x++) {\n let b = h * e + g * t10 + x * o + f;\n n.set(r.subarray(b, b + a[3]), i), i += a[3];\n }\n}\nvar LF = { kernelName: Es, backendName: \"wasm\", kernelFunc: Eo };\nfunction E9(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { blockShape: s, crops: a } = o, i = s.reduce((x, b) => x * b), p = S.getReshaped(n.shape, s, i), u = S.getPermuted(p.length, s.length), c = S.getReshapedPermuted(n.shape, s, i), l = S.getSliceBeginCoords(a, s.length), m = S.getSliceSize(c, a, s.length), d = Lt({ inputs: { x: n }, backend: t10, attrs: { shape: p } }), f = uo({ inputs: { x: d }, backend: t10, attrs: { perm: u } }), h = Lt({ inputs: { x: f }, backend: t10, attrs: { shape: c } }), g = Eo({ inputs: { x: h }, backend: t10, attrs: { begin: l, size: m } });\n return t10.disposeData(d.dataId), t10.disposeData(f.dataId), t10.disposeData(d.dataId), g;\n}\nvar BF = { kernelName: bs, backendName: \"wasm\", kernelFunc: E9 };\nfunction ms(r) {\n let { inputs: { x: e }, attrs: { dtype: t10 }, backend: o } = r, n = o.makeOutput(e.shape, t10), s = o.typedArrayFromHeap(e);\n return o.typedArrayFromHeap(n).set(s), n;\n}\nvar VF = { kernelName: co, backendName: \"wasm\", kernelFunc: ms };\nvar zF = Ve(Wo);\nvar WF;\nfunction A9(r) {\n WF = r.wasm.cwrap(lo, null, [\"number\", \"number\", \"number\", \"number\"]);\n}\nfunction R9(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { clipValueMin: s, clipValueMax: a } = o, i = t10.dataIdMap.get(n.dataId).id, p = t10.makeOutput(n.shape, n.dtype), u = t10.dataIdMap.get(p.dataId).id;\n return WF(i, s, a, u), p;\n}\nvar UF = { kernelName: lo, backendName: \"wasm\", setupFunc: A9, kernelFunc: R9 };\nfunction Zw(r) {\n let { inputs: e, backend: t10 } = r, o = y.parseAxisParam(r.attrs.axis, e[0].shape)[0], n = e.map((d) => d.shape);\n S.assertParamsConsistent(n, o);\n let s = S.computeOutShape(e.map((d) => d.shape), o), a = e.filter((d) => y.sizeFromShape(d.shape) > 0);\n if (a.length === 1)\n return Hu({ inputs: { x: a[0] }, backend: t10 });\n let i = t10.makeOutput(s, e[0].dtype);\n if (y.sizeFromShape(s) === 0)\n return i;\n if (a[0].dtype === \"string\") {\n let d = a.map((C) => {\n let k = [-1, y.sizeFromShape(C.shape.slice(o))];\n return Lt({ inputs: { x: C }, backend: t10, attrs: { shape: k } });\n }), f = d.map((C) => ({ vals: t10.readSync(C.dataId), shape: C.shape }));\n s = S.computeOutShape(d.map((C) => C.shape), 1);\n let h = d[0].shape[0] === 1, g = Nu(f, s, e[0].dtype, h), x = S.computeOutShape(a.map((C) => C.shape), o);\n i.shape = x;\n let b = t10.dataIdMap.get(i.dataId);\n return b.stringBytes = S.fromStringArrayToUint8(g), d.forEach((C) => t10.disposeData(C.dataId)), i;\n }\n let p = y.sizeFromShape(a[0].shape.slice(0, o)), u = 0, c = a.map((d) => {\n let f = y.sizeFromShape(d.shape.slice(o));\n return u += f, f;\n }), l = a.map((d) => t10.typedArrayFromHeap(d)), m = t10.typedArrayFromHeap(i);\n for (let d = 0; d < p; d++) {\n let f = d * u;\n for (let h = 0; h < l.length; h++) {\n let g = c[h], x = d * g, b = l[h].subarray(x, x + g);\n m.set(b, f), f += g;\n }\n }\n return i;\n}\nvar GF = { kernelName: Cs, backendName: \"wasm\", kernelFunc: Zw };\nvar HF;\nfunction D9(r) {\n HF = r.wasm.cwrap(Uo, null, [\"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\"]);\n}\nfunction F9(r) {\n let { inputs: e, attrs: t10, backend: o } = r, { x: n, filter: s } = e, a = o.dataIdMap.get(n.dataId).id, i = o.dataIdMap.get(s.dataId).id, { strides: p, dilations: u, pad: c, dimRoundingMode: l, dataFormat: m } = t10, d = S.convertConv2DDataFormat(m), f = S.computeConv2DInfo(n.shape, s.shape, p, u, c, l, false, d), h = f.filterHeight, g = f.filterWidth, x = f.padInfo.top, b = f.padInfo.right, C = f.padInfo.bottom, w = f.padInfo.left, k = f.dilationHeight, _ = f.dilationWidth, E = f.strideHeight, A = f.strideWidth, R = f.inChannels, D = f.outChannels, P = f.padInfo.type === \"SAME\" ? 1 : 0;\n if (f.dataFormat !== \"channelsLast\")\n throw new Error(`wasm backend Conv2D does not support dataFormat:'${f.dataFormat}'. Please use 'channelsLast'.`);\n let M = o.makeOutput(f.outShape, \"float32\"), L = o.dataIdMap.get(M.dataId).id;\n return HF(a, n.shape[0], n.shape[1], n.shape[2], i, h, g, x, b, C, w, P, k, _, E, A, R, D, L), M;\n}\nvar KF = { kernelName: Uo, backendName: \"wasm\", setupFunc: D9, kernelFunc: F9 };\nvar qF;\nfunction O9(r) {\n qF = r.wasm.cwrap(Go, null, [\"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\"]);\n}\nfunction P9(r) {\n let { backend: e, inputs: t10, attrs: o } = r, { dy: n, filter: s } = t10, { strides: a, pad: i, dataFormat: p, dimRoundingMode: u, inputShape: c } = o, l = 1, m = S.convertConv2DDataFormat(p), d = S.computeConv2DInfo(c, s.shape, a, l, i, u, false, m), { batchSize: f, filterHeight: h, filterWidth: g, inChannels: x, inHeight: b, inWidth: C, outChannels: w, outHeight: k, outWidth: _, strideHeight: E, strideWidth: A } = d, R = h - 1 - d.padInfo.top, D = g - 1 - d.padInfo.left, P = d.dataFormat === \"channelsLast\", M = y.computeStrides(d.inShape), L = y.computeStrides(n.shape), [V, z, U] = y.computeStrides(s.shape), K = M[0], H = P ? M[1] : M[2], q = P ? M[2] : 1, Z = P ? 1 : M[1], ee = L[0], oe = P ? L[1] : L[2], J = P ? L[2] : 1, te = P ? 1 : L[1], ie = e.makeOutput(d.inShape, \"float32\"), ce = e.dataIdMap.get(ie.dataId).id, ye = e.dataIdMap.get(n.dataId).id, Ne = e.dataIdMap.get(s.dataId).id;\n return qF(ye, Ne, f, h, g, b, C, x, k, _, w, E, A, R, D, V, z, U, K, H, q, Z, ee, oe, J, te, ce), ie;\n}\nvar jF = { kernelName: Go, backendName: \"wasm\", setupFunc: O9, kernelFunc: P9 };\nvar XF = Ve(Ho);\nvar YF = Ve(Ko);\nvar Jw;\n(function(r) {\n r[r.bilinear = 0] = \"bilinear\", r[r.nearest = 1] = \"nearest\";\n})(Jw || (Jw = {}));\nvar QF;\nfunction M9(r) {\n QF = r.wasm.cwrap(Xo, null, [\"number\", \"number\", \"number\", \"number\", \"array\", \"number\", \"number\", \"number\", \"number\", \"number\"]);\n}\nfunction L9(r) {\n let { backend: e, inputs: t10, attrs: o } = r, { method: n, extrapolationValue: s, cropSize: a } = o, { image: i, boxes: p, boxInd: u } = t10, c = p.shape[0], [l, m] = a, d = [c, l, m, i.shape[3]], f = e.dataIdMap.get(i.dataId), h;\n i.dtype !== \"float32\" && (h = ms({ backend: e, inputs: { x: i }, attrs: { dtype: \"float32\" } }), f = e.dataIdMap.get(h.dataId));\n let g = f.id, x = e.dataIdMap.get(p.dataId).id, b = e.dataIdMap.get(u.dataId).id, C = e.makeOutput(d, \"float32\"), w = e.dataIdMap.get(C.dataId).id, k = new Uint8Array(new Int32Array(i.shape).buffer);\n return QF(g, x, b, c, k, l, m, Jw[n], s, w), h != null && e.disposeData(h.dataId), C;\n}\nvar ZF = { kernelName: Xo, backendName: \"wasm\", setupFunc: M9, kernelFunc: L9 };\nvar JF;\nfunction B9(r) {\n JF = r.wasm.cwrap(qo, null, [\"number\", \"number\", \"number\", \"number\", \"number\", \"number\"]);\n}\nfunction V9(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s, exclusive: a, reverse: i } = o, p = n.shape.length;\n y.assert(n.dtype === \"float32\" || n.dtype === \"int32\", () => `cumprod does not support ${n.dtype} tensors in the WASM backend`);\n let u = S.getAxesPermutation([s], p), c = n;\n u !== null && (c = uo({ inputs: { x: n }, attrs: { perm: u }, backend: t10 }));\n let l = S.getInnerMostAxes(1, p)[0];\n S.assertAxesAreInnerMostDims(\"cumprod\", [l], p);\n let m = t10.makeOutput(c.shape, c.dtype), d = c.shape[l], f = t10.dataIdMap.get(c.dataId).id, h = t10.dataIdMap.get(m.dataId).id;\n JF(f, a ? 1 : 0, i ? 1 : 0, d, h, Fe[n.dtype]);\n let g = m;\n if (u !== null) {\n let x = S.getUndoAxesPermutation(u);\n g = uo({ inputs: { x: m }, attrs: { perm: x }, backend: t10 }), t10.disposeData(c.dataId), t10.disposeData(m.dataId);\n }\n return g;\n}\nvar eO = { kernelName: qo, backendName: \"wasm\", setupFunc: B9, kernelFunc: V9 };\nvar tO;\nfunction z9(r) {\n tO = r.wasm.cwrap(jo, null, [\"number\", \"number\", \"number\", \"number\", \"number\", \"number\"]);\n}\nfunction W9(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s, exclusive: a, reverse: i } = o, p = n.shape.length;\n y.assert(n.dtype === \"float32\" || n.dtype === \"int32\", () => `cumsum does not support ${n.dtype} tensors in the WASM backend`);\n let u = S.getAxesPermutation([s], p), c = n;\n u !== null && (c = uo({ inputs: { x: n }, attrs: { perm: u }, backend: t10 }));\n let l = S.getInnerMostAxes(1, p)[0];\n S.assertAxesAreInnerMostDims(\"cumsum\", [l], p);\n let m = t10.makeOutput(c.shape, c.dtype), d = c.shape[l], f = t10.dataIdMap.get(c.dataId).id, h = t10.dataIdMap.get(m.dataId).id;\n tO(f, a ? 1 : 0, i ? 1 : 0, d, h, Fe[n.dtype]);\n let g = m;\n if (u !== null) {\n let x = S.getUndoAxesPermutation(u);\n g = uo({ inputs: { x: m }, attrs: { perm: x }, backend: t10 }), t10.disposeData(c.dataId), t10.disposeData(m.dataId);\n }\n return g;\n}\nvar rO = { kernelName: jo, backendName: \"wasm\", setupFunc: z9, kernelFunc: W9 };\nvar oO;\nfunction U9(r) {\n oO = r.wasm.cwrap(Yo, null, [\"number\", \"number\", \"number\", \"array\", \"number\", \"array\", \"array\", \"number\", \"number\"]);\n}\nfunction G9(r) {\n let { backend: e, inputs: t10, attrs: o } = r, { x: n } = t10, { blockSize: s, dataFormat: a } = o, i = n.shape[0], p = a === \"NHWC\" ? n.shape[1] : n.shape[2], u = a === \"NHWC\" ? n.shape[2] : n.shape[3], c = a === \"NHWC\" ? n.shape[3] : n.shape[1], l = p * s, m = u * s, d = c / (s * s), f = a === \"NHWC\" ? [i, l, m, d] : [i, d, l, m], h = e.makeOutput(f, \"float32\"), x = e.dataIdMap.get(n.dataId).id, b = new Uint8Array(new Int32Array(y.computeStrides(n.shape)).buffer), C = new Uint8Array(new Int32Array(f).buffer), w = new Uint8Array(new Int32Array(y.computeStrides(f)).buffer), k = e.dataIdMap.get(h.dataId).id;\n return oO(x, s, a === \"NHWC\" ? 1 : 0, b, n.shape.length - 1, C, w, f.length, k), h;\n}\nvar nO = { kernelName: Yo, backendName: \"wasm\", setupFunc: U9, kernelFunc: G9 };\nvar sO;\nfunction H9(r) {\n sO = r.wasm.cwrap(Qo, null, [\"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\"]);\n}\nfunction K9(r) {\n let { inputs: e, attrs: t10, backend: o } = r, { x: n, filter: s } = e, a = o.dataIdMap.get(n.dataId).id, i = o.dataIdMap.get(s.dataId).id, { strides: p, dilations: u, pad: c, dimRoundingMode: l } = t10, m = u == null ? [1, 1] : u, d = S.computeConv2DInfo(n.shape, s.shape, p, m, c, l, true), f = d.filterHeight, h = d.filterWidth, g = d.padInfo.top, x = d.padInfo.right, b = d.padInfo.bottom, C = d.padInfo.left, w = d.dilationHeight, k = d.dilationWidth, _ = d.strideHeight, E = d.strideWidth, A = d.inChannels, R = d.outChannels, D = d.padInfo.type === \"SAME\" ? 1 : 0;\n if (d.dataFormat !== \"channelsLast\")\n throw new Error(`wasm backend DepthwiseConv2dNative does not support dataFormat:'${d.dataFormat}'. Please use 'channelsLast'.`);\n let P = o.makeOutput(d.outShape, \"float32\"), M = o.dataIdMap.get(P.dataId).id;\n return sO(a, n.shape[0], n.shape[1], n.shape[2], i, f, h, g, x, b, C, D, w, k, _, E, A, R, M), P;\n}\nvar aO = { kernelName: Qo, backendName: \"wasm\", setupFunc: H9, kernelFunc: K9 };\nvar iO = Ve(Jo);\nvar q9 = false;\nvar uO = rt(en, q9, \"bool\");\nvar pO = Ve(tn, \"float32\");\nfunction yg(r) {\n let { inputs: e, attrs: t10, backend: o } = r, { input: n } = e, { dim: s } = t10, a = n.shape.length, i = n.shape.slice(), p = s;\n return s < 0 && (y.assert(-(a + 1) <= s, () => `Axis must be in the interval [${-(a + 1)}, ${a}]`), p = a + s + 1), i.splice(p, 0, 1), Lt({ inputs: { x: n }, backend: o, attrs: { shape: i } });\n}\nvar cO = { kernelName: Ss, backendName: \"wasm\", kernelFunc: yg };\nfunction eI(r) {\n let { attrs: { shape: e, value: t10, dtype: o }, backend: n } = r, s = n.makeOutput(e, o);\n return n.typedArrayFromHeap(s).fill(t10), s;\n}\nvar lO = { kernelName: ws, backendName: \"wasm\", kernelFunc: eI };\nvar mO;\nfunction j9(r) {\n mO = r.wasm.cwrap(rn, null, [\"number\", \"number\", \"number\", \"number\", \"number\", \"number\"]);\n}\nfunction X9(r) {\n let { inputs: e, backend: t10 } = r, { image: o } = e, n = t10.makeOutput(o.shape, o.dtype), s = t10.dataIdMap.get(o.dataId).id, a = t10.dataIdMap.get(n.dataId).id, [i, p, u, c] = o.shape;\n return mO(s, i, p, u, c, a), n;\n}\nvar dO = { kernelName: rn, backendName: \"wasm\", kernelFunc: X9, setupFunc: j9 };\nvar fO = Ve(on);\nvar Y9 = false;\nvar hO = rt(nn, Y9);\nvar gO;\nfunction Q9(r) {\n gO = r.wasm.cwrap(sn, null, [\"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\"]);\n}\nfunction Z9(r) {\n let { backend: e, inputs: t10, attrs: o } = r, { varianceEpsilon: n } = o, { x: s, mean: a, variance: i, offset: p, scale: u } = t10, c = e.dataIdMap.get(s.dataId).id, l = e.dataIdMap.get(a.dataId).id, m = e.dataIdMap.get(i.dataId).id, d = p != null ? e.dataIdMap.get(p.dataId).id : 0, f = u != null ? e.dataIdMap.get(u.dataId).id : 0, h = e.makeOutput(s.shape, s.dtype);\n if (y.sizeFromShape(s.shape) === 0)\n return h;\n let g = e.dataIdMap.get(h.dataId).id;\n return gO(c, l, m, d, f, n, g), h;\n}\nvar xO = { kernelName: sn, backendName: \"wasm\", setupFunc: Q9, kernelFunc: Z9 };\nvar yO;\nfunction J9(r) {\n yO = r.wasm.cwrap(go, null, [\"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\"]);\n}\nfunction eJ(r) {\n let { inputs: e, attrs: t10, backend: o } = r, { x: n, filter: s, bias: a, preluActivationWeights: i } = e, { strides: p, pad: u, dilations: c, dataFormat: l, dimRoundingMode: m, activation: d, leakyreluAlpha: f } = t10, h = S.computeConv2DInfo(n.shape, s.shape, p, c, u, m), g = Ui[d];\n if (g == null)\n throw new Error(`${d} activation not yet supported for FusedConv2D in the wasm backend.`);\n let x = o.dataIdMap.get(n.dataId).id, b = o.dataIdMap.get(s.dataId).id, C = h.outChannels, w = 0;\n if (a != null) {\n let J = o.dataIdMap.get(a.dataId);\n if (J.shape.length !== 1)\n throw new Error(`FusedConv2D only supports rank-1 bias but got rank ${J.shape.length}.`);\n if (J.shape[0] !== C)\n throw new Error(`FusedConv2D bias shape (${J.shape}) does not match the number of output channels (${C})`);\n w = J.id;\n }\n let k = h.filterHeight, _ = h.filterWidth, E = h.padInfo.top, A = h.padInfo.right, R = h.padInfo.bottom, D = h.padInfo.left, P = h.dilationHeight, M = h.dilationWidth, L = h.strideHeight, V = h.strideWidth, z = h.inChannels, U = h.padInfo.type === \"SAME\" ? 1 : 0, K = h.batchSize, H = h.inHeight, q = h.inWidth;\n if (l !== \"NHWC\")\n throw new Error(`wasm backend FusedConv2D does not support dataFormat:'${l}'. Please use 'NHWC'.`);\n let Z = o.makeOutput(h.outShape, \"float32\"), ee = o.dataIdMap.get(Z.dataId).id, oe = i == null ? 0 : o.dataIdMap.get(i.dataId).id;\n return yO(x, K, H, q, b, k, _, w, E, A, R, D, U, P, M, L, V, z, C, g, oe, f || 0, ee), Z;\n}\nvar bO = { kernelName: go, backendName: \"wasm\", setupFunc: J9, kernelFunc: eJ };\nvar CO;\nfunction tJ(r) {\n CO = r.wasm.cwrap(xo, null, [\"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\"]);\n}\nfunction rJ(r) {\n let { inputs: e, attrs: t10, backend: o } = r, { x: n, filter: s, bias: a, preluActivationWeights: i } = e, { strides: p, pad: u, dilations: c, dataFormat: l, dimRoundingMode: m, activation: d, leakyreluAlpha: f } = t10, h = S.computeConv2DInfo(n.shape, s.shape, p, c, u, m, true), g = Ui[d];\n if (g == null)\n throw new Error(`${d} activation not yet supported for FusedDepthwiseConv2D in the wasm backend.`);\n let x = o.dataIdMap.get(n.dataId).id, b = o.dataIdMap.get(s.dataId).id, C = h.outChannels, w = 0;\n if (a != null) {\n let J = o.dataIdMap.get(a.dataId);\n if (J.shape.length !== 1)\n throw new Error(`FusedDepthwiseConv2D only supports rank-1 bias but got rank ${J.shape.length}.`);\n if (J.shape[0] !== C)\n throw new Error(`FusedDepthwiseConv2D bias shape (${J.shape}) does not match the number of output channels (${C})`);\n w = J.id;\n }\n let k = h.filterHeight, _ = h.filterWidth, E = h.padInfo.top, A = h.padInfo.right, R = h.padInfo.bottom, D = h.padInfo.left, P = h.dilationHeight, M = h.dilationWidth, L = h.strideHeight, V = h.strideWidth, z = h.inChannels, U = h.padInfo.type === \"SAME\" ? 1 : 0, K = h.batchSize, H = h.inHeight, q = h.inWidth;\n if (l !== \"NHWC\")\n throw new Error(`wasm backend FusedDepthwiseConv2D does not support dataFormat:'${l}'. Please use 'NHWC'.`);\n let Z = o.makeOutput(h.outShape, \"float32\"), ee = o.dataIdMap.get(Z.dataId).id, oe = i == null ? 0 : o.dataIdMap.get(i.dataId).id;\n return CO(x, K, H, q, b, k, _, w, E, A, R, D, U, P, M, L, V, z, C, g, oe, f || 0, ee), Z;\n}\nvar SO = { kernelName: xo, backendName: \"wasm\", setupFunc: tJ, kernelFunc: rJ };\nvar wO;\nfunction oJ(r) {\n wO = r.wasm.cwrap(an, null, [\"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"array\", \"number\"]);\n}\nfunction nJ(r) {\n let { backend: e, inputs: t10 } = r, { params: o, indices: n } = t10, [s, a, i, p] = Wd.prepareAndValidate(o, n), u = e.makeOutput(s, o.dtype);\n if (a === 0)\n return u;\n let c = n.shape, l = c[c.length - 1], d = e.dataIdMap.get(o.dataId).id, h = e.dataIdMap.get(n.dataId).id, g = new Uint8Array(new Int32Array(p).buffer), x = e.dataIdMap.get(u.dataId).id;\n return wO(d, Fe[o.dtype], h, a, l, i, g, x), u;\n}\nvar IO = { kernelName: an, backendName: \"wasm\", setupFunc: oJ, kernelFunc: nJ };\nvar vO;\nfunction sJ(r) {\n vO = r.wasm.cwrap(\"Gather\", null, [\"number\", \"number\", \"array\", \"number\", \"number\", \"number\", \"array\", \"number\"]);\n}\nfunction aJ(r) {\n let { backend: e, inputs: t10, attrs: o } = r, { x: n, indices: s } = t10, { axis: a, batchDims: i } = o, p = y.parseAxisParam(a, n.shape)[0], u = e.readSync(s.dataId), c = n.shape[p];\n for (let R = 0; R < u.length; ++R) {\n let D = u[R];\n y.assert(D <= c - 1 && D >= 0, () => `GatherV2: the index value ${D} is not in [0, ${c - 1}]`);\n }\n let l = S.segment_util.collectGatherOpShapeInfo(n, s, p, i), m = Lt({ inputs: { x: n }, attrs: { shape: [l.batchSize, l.outerSize, l.dimSize, l.sliceSize] }, backend: e }), d = y.sizeFromShape(s.shape), f = Lt({ inputs: { x: s }, attrs: { shape: [l.batchSize, d / l.batchSize] }, backend: e }), h = [l.batchSize, l.outerSize, d / l.batchSize, l.sliceSize], g = e.makeOutput(h, n.dtype);\n if (y.sizeFromShape(n.shape) === 0)\n return g;\n let x = m.shape.length - 1, C = e.dataIdMap.get(m.dataId).id, k = e.dataIdMap.get(f.dataId).id, _ = e.dataIdMap.get(g.dataId).id, E = new Uint8Array(new Int32Array(y.computeStrides(m.shape)).buffer), A = new Uint8Array(new Int32Array(y.computeStrides(h)).buffer);\n return vO(C, Fe[n.dtype], E, x, k, l.batchSize, A, _), e.disposeData(m.dataId), e.disposeData(f.dataId), g.shape = l.outputShape, g;\n}\nvar kO = { kernelName: Is, backendName: \"wasm\", setupFunc: sJ, kernelFunc: aJ };\nvar iJ = false;\nvar NO = rt(un, iJ, \"bool\");\nvar uJ = false;\nvar TO = rt(pn, uJ, \"bool\");\nvar _O = Ve(cn, \"bool\");\nvar $O;\nfunction pJ(r) {\n $O = r.wasm.cwrap(ln, null, [\"number\", \"number\", \"number\", \"number\"]);\n}\nfunction cJ(r) {\n let { inputs: { x: e }, attrs: { alpha: t10 }, backend: o } = r, n = o.dataIdMap.get(e.dataId).id, s = o.makeOutput(e.shape, \"float32\");\n if (y.sizeFromShape(e.shape) !== 0) {\n let a = o.dataIdMap.get(s.dataId).id;\n $O(n, Fe[e.dtype], t10, a);\n }\n return s;\n}\nvar EO = { kernelName: ln, backendName: \"wasm\", setupFunc: pJ, kernelFunc: cJ };\nvar lJ = false;\nvar AO = rt(mn, lJ, \"bool\");\nvar mJ = false;\nvar RO = rt(dn, mJ, \"bool\");\nvar DO = Ve(fn);\nvar dJ = false;\nvar FO = rt(hn, dJ, \"bool\");\nvar OO = Ve(gn);\nvar fJ = false;\nvar PO = rt(xn, fJ, \"bool\");\nvar hJ = false;\nvar MO = rt(XI, hJ, \"bool\");\nvar LO;\nfunction gJ(r) {\n LO = r.wasm.cwrap(yn, null, [\"number\", \"number\", \"number\", \"number\"]);\n}\nfunction xJ(r) {\n let { backend: e, inputs: t10, attrs: o } = r, { reductionIndices: n, keepDims: s } = o, { x: a } = t10, p = e.dataIdMap.get(a.dataId).id, u = a, { transposed: c, axes: l, originalAxes: m, inputWasTransposed: d } = kr(a, n, e);\n if (d) {\n let C = e.dataIdMap.get(c.dataId).id;\n u = c, p = C;\n }\n let f = u.shape.length;\n S.assertAxesAreInnerMostDims(\"max\", l, f);\n let [h, g] = S.computeOutAndReduceShapes(u.shape, l), x = y.sizeFromShape(g), b = e.makeOutput(h, a.dtype);\n if (y.sizeFromShape(u.shape) !== 0) {\n let C = e.dataIdMap.get(b.dataId).id;\n LO(p, Fe[a.dtype], x, C);\n }\n if (d && e.disposeData(c.dataId), s) {\n let C = S.expandShapeToKeepDim(b.shape, m);\n b.shape = C;\n }\n return b;\n}\nvar BO = { kernelName: yn, backendName: \"wasm\", setupFunc: gJ, kernelFunc: xJ };\nvar yJ = false;\nvar VO = rt(bn, yJ);\nvar zO;\nfunction bJ(r) {\n zO = r.wasm.cwrap(Cn, null, [\"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\"]);\n}\nfunction CJ(r) {\n let { inputs: e, attrs: t10, backend: o } = r, n = e.x, s = o.dataIdMap.get(n.dataId).id;\n y.assert(n.dtype === \"float32\", () => `Error in MaxPool: only float32 input is supported. Got ${n.dtype}.`);\n let { filterSize: a, strides: i, pad: p, dimRoundingMode: u } = t10, c = S.computePool2DInfo(n.shape, a, i, 1, p, u), l = c.filterHeight, m = c.filterWidth, d = c.padInfo.top, f = c.padInfo.right, h = c.padInfo.bottom, g = c.padInfo.left, x = c.dilationHeight, b = c.dilationWidth, C = c.strideHeight, w = c.strideWidth, k = c.inChannels, _ = c.outChannels;\n if (c.dataFormat !== \"channelsLast\")\n throw new Error(`wasm backend does not support dataFormat:'${c.dataFormat}'. Please use 'channelsLast'.`);\n let E = o.makeOutput(c.outShape, \"float32\"), A = o.dataIdMap.get(E.dataId).id;\n return zO(s, n.shape[0], n.shape[1], n.shape[2], l, m, d, f, h, g, x, b, C, w, k, _, A), E;\n}\nvar WO = { kernelName: Cn, backendName: \"wasm\", setupFunc: bJ, kernelFunc: CJ };\nvar UO;\nfunction SJ(r) {\n UO = r.wasm.cwrap(Sn, null, [\"number, number, number\"]);\n}\nfunction wJ(r) {\n let { backend: e, inputs: t10, attrs: o } = r, { axis: n, keepDims: s } = o, { x: a } = t10, i = e.dataIdMap.get(a.dataId).id, p = i, u = a, { transposed: c, axes: l, originalAxes: m, inputWasTransposed: d } = kr(a, n, e), f = l;\n if (d) {\n let w = e.dataIdMap.get(c.dataId).id;\n w !== i && (u = c, p = w, f = S.getInnerMostAxes(f.length, u.shape.length));\n }\n S.assertAxesAreInnerMostDims(\"mean\", f, u.shape.length);\n let [h, g] = S.computeOutAndReduceShapes(u.shape, f), x = y.sizeFromShape(g), b = u;\n u.dtype !== \"float32\" && (b = ms({ backend: e, inputs: { x: u }, attrs: { dtype: \"float32\" } }), p = e.dataIdMap.get(b.dataId).id);\n let C = e.makeOutput(h, \"float32\");\n if (y.sizeFromShape(u.shape) !== 0) {\n let w = e.dataIdMap.get(C.dataId).id;\n UO(p, x, w);\n }\n if (d && e.disposeData(c.dataId), s) {\n let w = S.expandShapeToKeepDim(C.shape, m);\n C.shape = w;\n }\n return u.dtype !== \"float32\" && e.disposeData(b.dataId), C;\n}\nvar GO = { kernelName: Sn, backendName: \"wasm\", setupFunc: SJ, kernelFunc: wJ };\nvar HO;\nfunction IJ(r) {\n HO = r.wasm.cwrap(wn, null, [\"number\", \"number\", \"number\", \"number\"]);\n}\nfunction vJ(r) {\n let { backend: e, inputs: t10, attrs: o } = r, { axis: n, keepDims: s } = o, { x: a } = t10, i = e.dataIdMap.get(a.dataId).id, p = i, u = a, { transposed: c, axes: l, originalAxes: m, inputWasTransposed: d } = kr(a, n, e);\n if (d) {\n let C = e.dataIdMap.get(c.dataId).id;\n C !== i && (u = c, p = C);\n }\n let f = u.shape.length;\n S.assertAxesAreInnerMostDims(\"min\", l, f);\n let [h, g] = S.computeOutAndReduceShapes(u.shape, l), x = y.sizeFromShape(g), b = e.makeOutput(h, u.dtype);\n if (y.sizeFromShape(u.shape) !== 0) {\n let C = e.dataIdMap.get(b.dataId).id;\n HO(p, Fe[a.dtype], x, C);\n }\n if (d && e.disposeData(c.dataId), s) {\n let C = S.expandShapeToKeepDim(b.shape, m);\n b.shape = C;\n }\n return b;\n}\nvar KO = { kernelName: wn, backendName: \"wasm\", setupFunc: IJ, kernelFunc: vJ };\nvar kJ = false;\nvar qO = rt(In, kJ);\nvar tI;\n(function(r) {\n r[r.reflect = 0] = \"reflect\", r[r.symmetric = 1] = \"symmetric\";\n})(tI || (tI = {}));\nvar jO;\nfunction NJ(r) {\n jO = r.wasm.cwrap(vn, null, [\"number\", \"array\", \"number\", \"number\", \"array\", \"array\", \"number\", \"number\"]);\n}\nfunction TJ(r) {\n let { inputs: { x: e }, backend: t10, attrs: { paddings: o, mode: n } } = r, s = o.map((f, h) => f[0] + e.shape[h] + f[1]), a = t10.dataIdMap.get(e.dataId).id, i = t10.makeOutput(s, e.dtype), p = t10.dataIdMap.get(i.dataId).id, u = new Uint8Array(new Int32Array(e.shape).buffer), c = o.map((f) => f[0]), l = o.map((f) => f[1]), m = new Uint8Array(new Int32Array(c).buffer), d = new Uint8Array(new Int32Array(l).buffer);\n return jO(a, u, e.shape.length, Fe[e.dtype], m, d, tI[n], p), i;\n}\nvar XO = { kernelName: vn, backendName: \"wasm\", kernelFunc: TJ, setupFunc: NJ };\nvar _J = true;\nvar YO = rt(kn, _J);\nvar QO = Ve(vs);\nfunction wc(r, e) {\n let t10 = new Int32Array(r.wasm.HEAPU8.buffer, e, 4), o = t10[0], n = t10[1], s = t10[2], a = t10[3];\n return r.wasm._free(e), { pSelectedIndices: o, selectedSize: n, pSelectedScores: s, pValidOutputs: a };\n}\nvar ZO;\nfunction $J(r) {\n ZO = r.wasm.cwrap(Tn, \"number\", [\"number\", \"number\", \"number\", \"number\", \"number\"]);\n}\nfunction EJ(r) {\n let { backend: e, inputs: t10, attrs: o } = r, { iouThreshold: n, maxOutputSize: s, scoreThreshold: a } = o, { boxes: i, scores: p } = t10, u = e.dataIdMap.get(i.dataId).id, c = e.dataIdMap.get(p.dataId).id, l = ZO(u, c, s, n, a), { pSelectedIndices: m, selectedSize: d, pSelectedScores: f, pValidOutputs: h } = wc(e, l);\n return e.wasm._free(f), e.wasm._free(h), e.makeOutput([d], \"int32\", m);\n}\nvar JO = { kernelName: Tn, backendName: \"wasm\", setupFunc: $J, kernelFunc: EJ };\nvar eP;\nfunction AJ(r) {\n eP = r.wasm.cwrap(ba, \"number\", [\"number\", \"number\", \"number\", \"number\", \"number\", \"bool\"]);\n}\nfunction RJ(r) {\n let { backend: e, inputs: t10, attrs: o } = r, { iouThreshold: n, maxOutputSize: s, scoreThreshold: a, padToMaxOutputSize: i } = o, { boxes: p, scores: u } = t10, c = e.dataIdMap.get(p.dataId).id, l = e.dataIdMap.get(u.dataId).id, m = eP(c, l, s, n, a, i), { pSelectedIndices: d, selectedSize: f, pSelectedScores: h, pValidOutputs: g } = wc(e, m);\n e.wasm._free(h);\n let x = e.makeOutput([f], \"int32\", d), b = e.makeOutput([], \"int32\", g);\n return [x, b];\n}\nvar tP = { kernelName: ba, backendName: \"wasm\", setupFunc: AJ, kernelFunc: RJ };\nvar rP;\nfunction DJ(r) {\n rP = r.wasm.cwrap(_n, \"number\", [\"number\", \"number\", \"number\", \"number\", \"number\", \"number\"]);\n}\nfunction FJ(r) {\n let { backend: e, inputs: t10, attrs: o } = r, { iouThreshold: n, maxOutputSize: s, scoreThreshold: a, softNmsSigma: i } = o, { boxes: p, scores: u } = t10, c = e.dataIdMap.get(p.dataId).id, l = e.dataIdMap.get(u.dataId).id, m = rP(c, l, s, n, a, i), { pSelectedIndices: d, selectedSize: f, pSelectedScores: h, pValidOutputs: g } = wc(e, m);\n e.wasm._free(g);\n let x = e.makeOutput([f], \"int32\", d), b = e.makeOutput([f], \"float32\", h);\n return [x, b];\n}\nvar oP = { kernelName: _n, backendName: \"wasm\", setupFunc: DJ, kernelFunc: FJ };\nvar OJ = false;\nvar nP = rt(Nn, OJ, \"bool\");\nvar sP;\nfunction PJ(r) {\n sP = r.wasm.cwrap($n, null, [\"number\", \"number\", \"number\", \"number\", \"number\"]);\n}\nfunction MJ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { indices: n } = e, { dtype: s, depth: a, onValue: i, offValue: p } = o, u = t10.makeOutput([...n.shape, a], s), c = t10.dataIdMap.get(u.dataId).id, m = t10.dataIdMap.get(n.dataId).id;\n return sP(m, a, i, p, c), u;\n}\nvar aP = { kernelName: $n, backendName: \"wasm\", setupFunc: PJ, kernelFunc: MJ };\nfunction LJ(r) {\n let { inputs: { x: e }, backend: t10 } = r, o = t10.makeOutput(e.shape, e.dtype);\n return t10.typedArrayFromHeap(o).fill(1), o;\n}\nvar iP = { kernelName: ks, backendName: \"wasm\", kernelFunc: LJ };\nfunction BJ(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { axis: n } = o;\n if (e.length === 1)\n return yg({ inputs: { input: e[0] }, backend: t10, attrs: { dim: n } });\n let s = e[0].shape, a = e[0].dtype;\n e.forEach((c) => {\n y.assertShapesMatch(s, c.shape, \"All tensors passed to stack must have matching shapes\"), y.assert(a === c.dtype, () => \"All tensors passed to stack must have matching dtypes\");\n });\n let i = [], p = e.map((c) => {\n let l = yg({ inputs: { input: c }, backend: t10, attrs: { dim: n } });\n return i.push(l), l;\n }), u = Zw({ inputs: p, backend: t10, attrs: { axis: n } });\n return i.forEach((c) => t10.disposeData(c.dataId)), u;\n}\nvar uP = { kernelName: Ns, backendName: \"wasm\", kernelFunc: BJ };\nvar pP;\nfunction VJ(r) {\n pP = r.wasm.cwrap(En, null, [\"number\", \"array\", \"number\", \"number\", \"array\", \"array\", \"number\", \"number\"]);\n}\nfunction zJ(r) {\n let { inputs: { x: e }, backend: t10, attrs: { paddings: o, constantValue: n } } = r, s = o.map((h, g) => h[0] + e.shape[g] + h[1]);\n if (y.sizeFromShape(e.shape) === 0)\n return eI({ backend: t10, attrs: { shape: s, value: n, dtype: e.dtype } });\n let a = t10.dataIdMap.get(e.dataId).id, i = t10.makeOutput(s, e.dtype), u = t10.dataIdMap.get(i.dataId).id, c = new Uint8Array(new Int32Array(e.shape).buffer), l = o.map((h) => h[0]), m = o.map((h) => h[1]), d = new Uint8Array(new Int32Array(l).buffer), f = new Uint8Array(new Int32Array(m).buffer);\n return pP(a, c, e.shape.length, Fe[e.dtype], d, f, n, u), i;\n}\nvar bg = { kernelName: En, backendName: \"wasm\", kernelFunc: zJ, setupFunc: VJ };\nvar WJ = false;\nvar cP = rt(An, WJ);\nvar lP;\nfunction UJ(r) {\n lP = r.wasm.cwrap(Rn, null, [\"number\", \"number\", \"number\"]);\n}\nfunction GJ(r) {\n let { inputs: e, backend: t10 } = r, { x: o, alpha: n } = e, s = t10.dataIdMap.get(o.dataId).id, a = t10.dataIdMap.get(n.dataId).id, i = s, p = o, u = p;\n p.dtype !== \"float32\" && (u = ms({ backend: t10, inputs: { x: o }, attrs: { dtype: \"float32\" } }), i = t10.dataIdMap.get(u.dataId).id);\n let c = t10.makeOutput(o.shape, \"float32\"), l = t10.dataIdMap.get(c.dataId).id;\n return lP(i, a, l), p.dtype !== \"float32\" && t10.disposeData(u.dataId), c;\n}\nvar mP = { kernelName: Rn, backendName: \"wasm\", setupFunc: UJ, kernelFunc: GJ };\nvar dP;\nfunction HJ(r) {\n dP = r.wasm.cwrap(Dn, null, [\"number\", \"number\", \"number\", \"number\"]);\n}\nfunction KJ(r) {\n let { backend: e, inputs: t10, attrs: o } = r, { axis: n, keepDims: s } = o, { x: a } = t10, i = e.dataIdMap.get(a.dataId).id, p = i, u = a, { transposed: c, axes: l, originalAxes: m, inputWasTransposed: d } = kr(a, n, e), f = l;\n if (d) {\n let C = e.dataIdMap.get(c.dataId).id;\n C !== i && (u = c, p = C, f = S.getInnerMostAxes(f.length, u.shape.length));\n }\n S.assertAxesAreInnerMostDims(\"prod\", f, u.shape.length);\n let [h, g] = S.computeOutAndReduceShapes(u.shape, f), x = y.sizeFromShape(g), b = e.makeOutput(h, u.dtype);\n if (y.sizeFromShape(u.shape) !== 0) {\n let C = e.dataIdMap.get(b.dataId).id;\n dP(p, x, Fe[b.dtype], C);\n }\n if (d && e.disposeData(c.dataId), s) {\n let C = S.expandShapeToKeepDim(b.shape, m);\n b.shape = C;\n }\n return b;\n}\nvar fP = { kernelName: Dn, backendName: \"wasm\", setupFunc: HJ, kernelFunc: KJ };\nvar qJ = (r) => {\n let { backend: e, attrs: t10 } = r, { start: o, stop: n, step: s, dtype: a } = t10, i = _u(o, n, s, a), p = e.makeOutput([i.length], a);\n return e.typedArrayFromHeap(p).set(i), p;\n};\nvar hP = { kernelName: Ts, backendName: \"wasm\", kernelFunc: qJ };\nvar jJ = true;\nvar gP = rt(Zo, jJ);\nvar xP = Ve(Fn);\nvar yP = Ve(On);\nvar bP = Ve(Ln);\nvar CP;\nfunction XJ(r) {\n CP = r.wasm.cwrap(Mn, null, [\"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\"]);\n}\nfunction YJ(r) {\n let { backend: e, inputs: t10, attrs: o } = r, { images: n } = t10, { alignCorners: s, halfPixelCenters: a, size: i } = o, [p, u] = i, [c, l, m, d] = n.shape, f = [c, p, u, d], h = e.dataIdMap.get(n.dataId), g;\n h.dtype !== \"float32\" && (g = ms({ backend: e, inputs: { x: n }, attrs: { dtype: \"float32\" } }), h = e.dataIdMap.get(g.dataId));\n let x = h.id, b = e.makeOutput(f, \"float32\");\n if (y.sizeFromShape(n.shape) === 0)\n return b;\n let C = e.dataIdMap.get(b.dataId).id;\n return CP(x, c, l, m, d, p, u, s ? 1 : 0, a ? 1 : 0, C), g != null && e.disposeData(g.dataId), b;\n}\nvar SP = { kernelName: Mn, backendName: \"wasm\", setupFunc: XJ, kernelFunc: YJ };\nvar wP;\nfunction QJ(r) {\n wP = r.wasm.cwrap(Pn, null, [\"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\"]);\n}\nfunction ZJ(r) {\n let { backend: e, inputs: t10, attrs: o } = r, { images: n } = t10, { alignCorners: s, halfPixelCenters: a, size: i } = o, [p, u] = i, [c, l, m, d] = n.shape, f = [c, p, u, d], h = e.makeOutput(f, \"float32\");\n if (y.sizeFromShape(n.shape) === 0)\n return h;\n let g = e.dataIdMap.get(n.dataId), x;\n g.dtype !== \"float32\" && (x = ms({ backend: e, inputs: { x: n }, attrs: { dtype: \"float32\" } }), g = e.dataIdMap.get(x.dataId));\n let b = g.id, C = e.dataIdMap.get(h.dataId).id;\n return wP(b, c, l, m, d, p, u, s ? 1 : 0, a ? 1 : 0, C), x != null && e.disposeData(x.dataId), h;\n}\nvar IP = { kernelName: Pn, backendName: \"wasm\", setupFunc: QJ, kernelFunc: ZJ };\nvar vP;\nfunction JJ(r) {\n vP = r.wasm.cwrap(Bn, null, [\"number\", \"array\", \"number\", \"array\", \"number\", \"number\"]);\n}\nfunction eee(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { dims: s } = o, a = y.parseAxisParam(s, n.shape);\n if (n.shape.length === 0)\n return Hu({ inputs: { x: n }, backend: t10 });\n let i = t10.makeOutput(n.shape, n.dtype), p = t10.dataIdMap.get(n.dataId).id, u = t10.dataIdMap.get(i.dataId).id, c = new Uint8Array(new Int32Array(a).buffer), l = new Uint8Array(new Int32Array(n.shape).buffer);\n vP(p, c, a.length, l, n.shape.length, u);\n let m = Lt({ inputs: { x: i }, attrs: { shape: n.shape }, backend: t10 });\n return t10.disposeData(i.dataId), m;\n}\nvar kP = { kernelName: Bn, backendName: \"wasm\", kernelFunc: eee, setupFunc: JJ };\nvar NP;\nfunction tee(r) {\n NP = r.wasm.cwrap(ts, null, [\"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"array\", \"number\", \"number\"]);\n}\nfunction ree(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { image: n } = e, { radians: s, fillValue: a, center: i } = o, p = t10.makeOutput(n.shape, n.dtype), u = t10.dataIdMap.get(n.dataId).id, c = t10.dataIdMap.get(p.dataId).id, [l, m, d, f] = n.shape, [h, g] = S.getImageCenter(i, m, d), x = a === 0, b = 255, C = typeof a == \"number\" ? [a, a, a, x ? 0 : b] : [...a, b], w = new Uint8Array(new Int32Array(C).buffer);\n return NP(u, l, m, d, f, s, h, g, w, C.length, c), p;\n}\nvar TP = { kernelName: ts, backendName: \"wasm\", kernelFunc: ree, setupFunc: tee };\nvar _P = Ve(Vn);\nvar $P = Ve(zn);\nvar EP;\nfunction oee(r) {\n EP = r.wasm.cwrap(Wn, null, [\"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"array\", \"number\", \"number\"]);\n}\nfunction nee(r) {\n let { backend: e, inputs: t10, attrs: o } = r, { indices: n, updates: s } = t10, { shape: a } = o, i = e.makeOutput(a, s.dtype);\n if (y.sizeFromShape(a) === 0)\n return i;\n let { sliceRank: p, numUpdates: u, sliceSize: c, strides: l, outputSize: m } = sl.calculateShapes(s, n, a), f = e.dataIdMap.get(n.dataId).id, g = e.dataIdMap.get(s.dataId).id, x = new Uint8Array(new Int32Array(l).buffer), b = e.dataIdMap.get(i.dataId).id;\n return EP(f, g, Fe[s.dtype], p, u, c, x, m, b), i;\n}\nvar AP = { kernelName: Wn, backendName: \"wasm\", setupFunc: oee, kernelFunc: nee };\nvar RP;\nfunction see(r) {\n RP = r.wasm.cwrap(\"SelectV2\", null, [\"number\", \"number\", \"number\", \"number\", \"number\"]);\n}\nfunction aee(r) {\n let { inputs: e, backend: t10 } = r, { condition: o, t: n, e: s } = e, a = t10.dataIdMap.get(o.dataId).id, i = t10.dataIdMap.get(n.dataId).id, p = t10.dataIdMap.get(s.dataId).id, u = t10.makeOutput(n.shape, n.dtype), c = t10.dataIdMap.get(u.dataId).id, l = o.shape.length, m = n.shape.length, d = l === 0 || l > 1 || m === 1 ? 1 : y.sizeFromShape(n.shape.slice(1));\n return RP(a, i, p, d, c), u;\n}\nvar DP = { kernelName: $s, backendName: \"wasm\", kernelFunc: aee, setupFunc: see };\nvar FP;\nfunction iee(r) {\n FP = r.wasm.cwrap(Gn, null, [\"number\", \"number\"]);\n}\nfunction uee(r) {\n let { backend: e, inputs: { x: t10 } } = r, o = e.dataIdMap.get(t10.dataId).id, n = e.makeOutput(t10.shape, t10.dtype), s = e.dataIdMap.get(n.dataId).id;\n return y.sizeFromShape(n.shape) === 0 || FP(o, s), n;\n}\nvar OP = { kernelName: \"Sigmoid\", backendName: \"wasm\", setupFunc: iee, kernelFunc: uee };\nvar PP = Ve(Un);\nvar MP;\nfunction pee(r) {\n MP = r.wasm.cwrap(qn, null, [\"number\", \"number\", \"number\", \"number\"]);\n}\nfunction cee(r) {\n let { backend: e, inputs: { logits: t10 }, attrs: { dim: o } } = r, n = e.dataIdMap.get(t10.dataId).id, s = e.makeOutput(t10.shape, t10.dtype), a = e.dataIdMap.get(s.dataId).id, i = t10.shape[o], p = y.sizeFromShape(t10.shape) / i;\n return y.sizeFromShape(s.shape) === 0 || MP(n, a, i, p), s;\n}\nvar LP = { kernelName: qn, backendName: \"wasm\", setupFunc: pee, kernelFunc: cee };\nfunction lee(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { blockShape: s, paddings: a } = o, i = y.sizeFromShape(s), p = [[0, 0]];\n p.push(...a);\n for (let _ = 1 + s.length; _ < n.shape.length; ++_)\n p.push([0, 0]);\n let u = bg.kernelFunc({ inputs: { x: n }, backend: t10, attrs: { paddings: p, constantValue: 0 } }), c = S.getReshaped(u.shape, s, i, false), l = S.getPermuted(c.length, s.length, false), m = S.getReshapedPermuted(u.shape, s, i, false), h = Lt({ inputs: { x: u }, backend: t10, attrs: { shape: c } }), b = uo({ inputs: { x: h }, backend: t10, attrs: { perm: l } }), k = Lt({ inputs: { x: b }, backend: t10, attrs: { shape: m } });\n return t10.disposeData(u.dataId), t10.disposeData(h.dataId), t10.disposeData(b.dataId), k;\n}\nvar BP = { kernelName: As, backendName: \"wasm\", kernelFunc: lee };\nvar VP;\nfunction mee(r) {\n VP = r.wasm.cwrap(\"SparseFillEmptyRows\", \"number\", [\"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\"]);\n}\nfunction dee(r) {\n let { backend: e, inputs: t10 } = r, { indices: o, values: n, denseShape: s, defaultValue: a } = t10, i = o.shape[0], p = o.shape[1], u = e.readSync(s.dataId)[0], c = [i + u, p], l = e.dataIdMap.get(o.dataId).id, m = e.dataIdMap.get(n.dataId).id, d = e.dataIdMap.get(a.dataId).id, f = e.makeOutput(c, o.dtype), h = e.dataIdMap.get(f.dataId).id, g = e.makeOutput(c.slice(0, 1), n.dtype), x = e.dataIdMap.get(g.dataId).id, b = e.makeOutput([u], \"bool\"), C = e.dataIdMap.get(b.dataId).id, w = e.makeOutput([i], o.dtype), k = e.dataIdMap.get(w.dataId).id, _ = e.makeOutput([4], \"int32\"), E = e.dataIdMap.get(_.dataId).id, A = VP(l, m, Fe[n.dtype], i, u, p, d, h, x, C, k, E), R = e.readSync(_.dataId), D;\n switch (R[0]) {\n case 1: {\n D = S.getSparseFillEmptyRowsIndicesDenseShapeMismatch(R[1]);\n break;\n }\n case 2: {\n D = S.getSparseFillEmptyRowsNegativeIndexErrorMessage(R[1], R[2]);\n break;\n }\n case 3:\n D = S.getSparseFillEmptyRowsOutOfRangeIndexErrorMessage(R[1], R[2], R[3]);\n break;\n default:\n D = \"\";\n }\n if (e.disposeData(_.dataId), D)\n throw e.disposeData(f.dataId), e.disposeData(g.dataId), e.disposeData(b.dataId), e.disposeData(w.dataId), new Error(D);\n let P = f, M = g;\n return A !== c[0] && (P = Eo({ inputs: { x: f }, attrs: { begin: 0, size: [A, p] }, backend: e }), M = Eo({ inputs: { x: g }, attrs: { begin: 0, size: A }, backend: e }), e.disposeData(f.dataId), e.disposeData(g.dataId)), [P, M, b, w];\n}\nvar zP = { kernelName: hi, backendName: \"wasm\", setupFunc: mee, kernelFunc: dee };\nvar WP;\nfunction fee(r) {\n WP = r.wasm.cwrap(va, null, [\"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\"]);\n}\nfunction hee(r) {\n let { backend: e, inputs: t10 } = r, { inputIndices: o, inputShape: n, newShape: s } = t10;\n if (o.shape.length !== 2)\n throw new Error(`Input indices should be a matrix but received shape\n ${o.shape}`);\n if (n.shape.length !== 1)\n throw new Error(`Input shape should be a vector but received shape\n ${n.shape}`);\n if (s.shape.length !== 1)\n throw new Error(`Target shape should be a vector but received shape ${s.shape}`);\n let a = e.dataIdMap.get(o.dataId).id, i = e.dataIdMap.get(n.dataId).id, p = e.dataIdMap.get(s.dataId).id, u = o.shape[0], c = y.sizeFromShape(s.shape), l = e.makeOutput([u, c], o.dtype), m = e.dataIdMap.get(l.dataId).id, d = e.makeOutput([c], s.dtype), f = e.dataIdMap.get(d.dataId).id, h = e.makeOutput([3], \"int32\"), g = e.dataIdMap.get(h.dataId).id;\n WP(a, i, p, u, m, f, g);\n let x = e.readSync(h.dataId), b;\n switch (x[0]) {\n case 0: {\n b = S.getSparseReshapeMultipleNegativeOneOutputDimErrorMessage(x[1], x[2]);\n break;\n }\n case 1: {\n b = S.getSparseReshapeNegativeOutputDimErrorMessage(x[1], x[2]);\n break;\n }\n case 2:\n b = S.getSparseReshapeEmptyTensorZeroOutputDimErrorMessage();\n break;\n case 3: {\n let C = Array.from(e.readSync(n.dataId)), w = Array.from(e.readSync(d.dataId));\n b = S.getSparseReshapeInputOutputMultipleErrorMessage(C, w);\n break;\n }\n case 4: {\n let C = Array.from(e.readSync(n.dataId)), w = Array.from(e.readSync(d.dataId));\n b = S.getSparseReshapeInputOutputMismatchErrorMessage(C, w);\n break;\n }\n default:\n b = \"\";\n }\n if (e.disposeData(h.dataId), b)\n throw e.disposeData(l.dataId), e.disposeData(d.dataId), new Error(b);\n return [l, d];\n}\nvar UP = { kernelName: va, backendName: \"wasm\", setupFunc: fee, kernelFunc: hee };\nvar GP;\nfunction Cg(r) {\n GP = r.wasm.cwrap(\"SparseSegmentReduction\", null, [\"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\"]);\n}\nfunction Sg(r, e) {\n let { backend: t10, inputs: o } = r, { data: n, indices: s, segmentIds: a } = o, i = s.shape[0], p = t10.readSync(a.dataId, i - 1, i)[0], c = i > 0 ? p + 1 : 0;\n if (c < 0)\n throw new Error(S.getSparseSegmentReductionNegativeSegmentIdsErrorMessage());\n let l = n.shape.slice();\n l[0] = c;\n let m = t10.dataIdMap.get(n.dataId).id, d = t10.dataIdMap.get(s.dataId).id, f = t10.dataIdMap.get(a.dataId).id, h = t10.makeOutput(l, n.dtype), g = t10.dataIdMap.get(h.dataId).id, x = t10.makeOutput([4], \"int32\"), b = t10.dataIdMap.get(x.dataId).id;\n GP(m, Fe[n.dtype], n.shape[0], d, f, g, b, e, 0);\n let C = t10.readSync(x.dataId), w;\n switch (C[0]) {\n case 0: {\n w = S.getSparseSegmentReductionNegativeSegmentIdsErrorMessage();\n break;\n }\n case 1: {\n w = S.getSparseSegmentReductionNonIncreasingSegmentIdsErrorMessage();\n break;\n }\n case 2:\n w = S.getSparseSegmentReductionSegmentIdOutOfRangeErrorMessage(C[1], C[2]);\n break;\n case 3:\n w = S.getSparseSegmentReductionIndicesOutOfRangeErrorMessage(C[1], C[2], C[3]);\n break;\n default:\n w = \"\";\n }\n if (t10.disposeData(x.dataId), w)\n throw t10.disposeData(h.dataId), new Error(w);\n return h;\n}\nfunction gee(r) {\n return Sg(r, true);\n}\nvar HP = { kernelName: gi, backendName: \"wasm\", setupFunc: Cg, kernelFunc: gee };\nfunction xee(r) {\n return Sg(r, false);\n}\nvar KP = { kernelName: xi, backendName: \"wasm\", setupFunc: Cg, kernelFunc: xee };\nfunction yee(r) {\n let { inputs: e, attrs: t10, backend: o } = r, { x: n } = e, { numOrSizeSplits: s, axis: a } = t10, i = y.parseAxisParam(a, n.shape)[0], p = S.prepareSplitSize(n, s, i), u = new Array(n.shape.length).fill(0), c = n.shape.slice();\n return p.map((l) => {\n let m = [...c];\n m[i] = l;\n let d = Eo({ inputs: { x: n }, attrs: { begin: u, size: m }, backend: o });\n return u[i] += l, d;\n });\n}\nvar qP = { kernelName: Rs, backendName: \"wasm\", kernelFunc: yee };\nvar jP = Ve(Hn);\nvar XP = Ve(bi);\nvar bee = true;\nvar YP = rt(jn, bee);\nvar QP;\nfunction Cee(r) {\n QP = r.wasm.cwrap(fo, null, [\"number\", \"number\", \"number\", \"number\"]);\n}\nfunction See(r) {\n let { backend: e, inputs: t10, attrs: o } = r, { alpha: n } = o, { x: s } = t10, a = e.dataIdMap.get(s.dataId).id, i = e.makeOutput(s.shape, s.dtype), p = e.dataIdMap.get(i.dataId).id;\n return QP(a, n, Fe[s.dtype], p), i;\n}\nvar ZP = { kernelName: fo, backendName: \"wasm\", setupFunc: Cee, kernelFunc: See };\nvar JP;\nfunction wee(r) {\n JP = r.wasm.cwrap(Xn, null, [\"number\", \"array\", \"number\", \"array\", \"array\", \"array\", \"array\", \"array\", \"number\", \"number\"]);\n}\nfunction Iee(r) {\n let { backend: e, inputs: t10, attrs: o } = r, { x: n } = t10, { begin: s, end: a, strides: i, beginMask: p, endMask: u, ellipsisMask: c, newAxisMask: l, shrinkAxisMask: m } = o, { finalShapeSparse: d, finalShape: f, isIdentity: h, sliceDim0: g, isSimpleSlice: x, begin: b, end: C, strides: w } = ut.sliceInfo(n.shape, s, a, i, p, u, c, l, m), k;\n if (h)\n k = Lt({ inputs: { x: n }, backend: e, attrs: { shape: f } });\n else if (g || x) {\n y.assert(n.shape.length >= 1, () => `Input must have rank at least 1, got: ${n.shape.length}`);\n let _ = ut.computeOutShape(b, C, w), E = Eo({ inputs: { x: n }, backend: e, attrs: { begin: b, size: _ } });\n k = Lt({ inputs: { x: E }, backend: e, attrs: { shape: f } }), e.disposeData(E.dataId);\n } else {\n let _ = e.makeOutput(d, \"float32\"), E = e.dataIdMap.get(n.dataId).id, A = new Uint8Array(new Int32Array(y.computeStrides(n.shape)).buffer), R = new Uint8Array(new Int32Array(b).buffer), D = new Uint8Array(new Int32Array(C).buffer), P = new Uint8Array(new Int32Array(w).buffer), M = new Uint8Array(new Int32Array(d).buffer), L = new Uint8Array(new Int32Array(y.computeStrides(d)).buffer), V = e.dataIdMap.get(_.dataId).id;\n JP(E, A, n.shape.length, R, D, P, M, L, d.length, V), k = Lt({ inputs: { x: _ }, backend: e, attrs: { shape: f } }), e.disposeData(_.dataId);\n }\n return k;\n}\nvar e3 = { kernelName: Xn, backendName: \"wasm\", setupFunc: wee, kernelFunc: Iee };\nfunction vee(r) {\n let { backend: e, inputs: t10, attrs: o } = r, { data: n, dataSplits: s } = t10, { separator: a, nGramWidths: i, leftPad: p, rightPad: u, padWidth: c, preserveShortSequences: l } = o, m = e.readSync(n.dataId), d = e.readSync(s.dataId), [f, h] = Eu(m, d, a, i, p, u, c, l), g = e.makeOutput([f.length], \"string\"), x = e.dataIdMap.get(g.dataId);\n x.stringBytes = f;\n let b = e.makeOutput(s.shape, \"int32\");\n return e.typedArrayFromHeap(b).set(h), [g, b];\n}\nvar t3 = { kernelName: Ds, backendName: \"wasm\", kernelFunc: vee };\nfunction kee(r) {\n let { backend: e, inputs: t10, attrs: o } = r, { input: n, delimiter: s } = t10, { skipEmpty: a } = o, i = e.readSync(n.dataId), p = e.readSync(s.dataId), [u, c, l] = Au(i, p[0], a), m = c.length, d = e.makeOutput([m, 2], \"int32\");\n e.typedArrayFromHeap(d).set(u);\n let h = e.makeOutput([m], \"string\"), g = e.dataIdMap.get(h.dataId);\n g.stringBytes = c;\n let x = e.makeOutput([2], \"int32\");\n return e.typedArrayFromHeap(x).set(l), [d, h, x];\n}\nvar r3 = { kernelName: Ci, backendName: \"wasm\", kernelFunc: kee };\nfunction Nee(r) {\n let { backend: e, inputs: t10, attrs: o } = r, { input: n } = t10, { numBuckets: s } = o, a = e.readSync(n.dataId), i = Ru(a, s), p = e.makeOutput(n.shape, \"int32\");\n return e.typedArrayFromHeap(p).set(i), p;\n}\nvar o3 = { kernelName: Si, backendName: \"wasm\", kernelFunc: Nee };\nvar Tee = true;\nvar n3 = rt(Yn, Tee);\nvar s3;\nfunction _ee(r) {\n s3 = r.wasm.cwrap(Kn, null, [\"number\", \"number\", \"number\", \"number\"]);\n}\nfunction $ee(r) {\n let { backend: e, inputs: t10, attrs: o } = r, { axis: n, keepDims: s } = o, { x: a } = t10, i = e.dataIdMap.get(a.dataId).id, p = i, u = a, { transposed: c, axes: l, originalAxes: m, inputWasTransposed: d } = kr(a, n, e), f = l;\n if (d) {\n let C = e.dataIdMap.get(c.dataId).id;\n C !== i && (u = c, p = C, f = S.getInnerMostAxes(f.length, u.shape.length));\n }\n S.assertAxesAreInnerMostDims(\"sum\", f, u.shape.length);\n let [h, g] = S.computeOutAndReduceShapes(u.shape, f), x = y.sizeFromShape(g), b = e.makeOutput(h, u.dtype);\n if (y.sizeFromShape(u.shape) !== 0) {\n let C = e.dataIdMap.get(b.dataId).id;\n s3(p, x, Fe[b.dtype], C);\n }\n if (d && e.disposeData(c.dataId), s) {\n let C = S.expandShapeToKeepDim(b.shape, m);\n b.shape = C;\n }\n return b;\n}\nvar a3 = { kernelName: Kn, backendName: \"wasm\", setupFunc: _ee, kernelFunc: $ee };\nvar i3 = Ve(Qn);\nvar u3 = Ve(Zn);\nvar p3;\nfunction Eee(r) {\n p3 = r.wasm.cwrap(to, null, [\"number\", \"array\", \"number\", \"array\", \"number\", \"number\"]);\n}\nfunction Aee(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, s = t10.dataIdMap.get(n.dataId).id, { reps: a } = o, i = new Array(n.shape.length);\n for (let m = 0; m < i.length; m++)\n i[m] = n.shape[m] * a[m];\n let p = new Uint8Array(new Int32Array(n.shape).buffer), u = new Uint8Array(new Int32Array(i).buffer), c = t10.makeOutput(i, n.dtype), l = t10.dataIdMap.get(c.dataId).id;\n return p3(s, p, n.shape.length, u, i.length, Fe[c.dtype], l), c;\n}\nvar c3 = { kernelName: to, backendName: \"wasm\", setupFunc: Eee, kernelFunc: Aee };\nvar l3;\nfunction Ree(r) {\n l3 = r.wasm.cwrap(Jn, null, [\"number\", \"array\", \"number\", \"number\", \"number\", \"bool\", \"number\", \"number\"]);\n}\nvar Dee = ({ inputs: r, backend: e, attrs: t10 }) => {\n let { x: o } = r, { k: n, sorted: s } = t10, a = e.dataIdMap.get(o.dataId).id, i = new Uint8Array(new Int32Array(o.shape).buffer), p = o.shape.slice();\n p[p.length - 1] = n;\n let u = e.makeOutput(p, o.dtype), c = e.dataIdMap.get(u.dataId).id, l = e.makeOutput(p, \"int32\"), m = e.dataIdMap.get(l.dataId).id;\n return l3(a, i, o.shape.length, Fe[o.dtype], n, s, c, m), [u, l];\n};\nvar m3 = { kernelName: Jn, backendName: \"wasm\", setupFunc: Ree, kernelFunc: Dee };\nvar d3;\nfunction Fee(r) {\n d3 = r.wasm.cwrap(es, null, [\"number\", \"number\", \"bool\", \"number\", \"number\", \"number\", \"number\", \"number\", \"number\", \"array\", \"number\", \"array\", \"number\", \"number\", \"number\", \"number\", \"number\"]);\n}\nfunction Oee(r) {\n let { backend: e, inputs: t10, attrs: o } = r, { image: n, transforms: s } = t10, { interpolation: a, fillMode: i, fillValue: p, outputShape: u } = o, [c, l, m, d] = n.shape, [f, h] = u != null ? u : [l, m], g = [c, f, h, d], x = new Uint8Array(new Int32Array(y.computeStrides(n.shape)).buffer), b = new Uint8Array(new Int32Array(y.computeStrides(g)).buffer), C = e.makeOutput(g, n.dtype), w = e.dataIdMap.get(C.dataId).id, _ = e.dataIdMap.get(n.dataId).id, A = e.dataIdMap.get(s.dataId).id, R = a === \"nearest\" ? 1 : 2, D;\n switch (i) {\n case \"constant\":\n D = 1;\n break;\n case \"reflect\":\n D = 2;\n break;\n case \"wrap\":\n D = 3;\n break;\n case \"nearest\":\n D = 4;\n break;\n default:\n D = 1;\n break;\n }\n return d3(_, A, s.shape[0] > 1, c, f, h, d, m, l, x, n.shape.length - 1, b, g.length - 1, R, D, p, w), C;\n}\nvar f3 = { kernelName: es, backendName: \"wasm\", setupFunc: Fee, kernelFunc: Oee };\nfunction Pee(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { value: n } = e, { axis: s } = o;\n s < 0 && (s += n.shape.length);\n let a = n.shape[s], i = n.shape.length, p = new Array(i - 1), u = 0;\n for (let d = 0; d < i; d++)\n d !== s && (p[u++] = n.shape[d]);\n let c = new Array(a), l = new Array(i).fill(0), m = n.shape.slice();\n m[s] = 1;\n for (let d = 0; d < c.length; d++)\n l[s] = d, c[d] = Eo({ inputs: { x: n }, attrs: { begin: l, size: m }, backend: t10 });\n return c.map(({ dataId: d, dtype: f }) => ({ dataId: d, dtype: f, shape: p }));\n}\nvar h3 = { kernelName: Fs, backendName: \"wasm\", kernelFunc: Pee };\nfunction Mee(r) {\n let { inputs: { x: e }, backend: t10 } = r, o = t10.makeOutput(e.shape, e.dtype);\n return t10.typedArrayFromHeap(o).fill(0), o;\n}\nvar g3 = { kernelName: Os, backendName: \"wasm\", kernelFunc: Mee };\nvar Lee = [bF, CF, SF, IF, _F, EF, RF, FF, MF, BF, VF, zF, UF, GF, KF, jF, XF, YF, ZF, eO, rO, nO, aO, iO, uO, pO, cO, lO, dO, fO, hO, xO, bO, SO, IO, kO, NO, TO, vF, _O, EO, AO, RO, DO, FO, OO, PO, MO, BO, VO, WO, GO, KO, qO, XO, YO, QO, JO, tP, oP, nP, aP, iP, uP, bg, cP, mP, fP, hP, gP, xP, yP, bP, OF, SP, IP, kP, TP, _P, $P, AP, DP, OP, PP, LF, LP, BP, zP, UP, HP, KP, qP, jP, XP, YP, ZP, e3, t3, r3, o3, n3, a3, i3, u3, c3, m3, f3, NF, h3, g3];\nfor (let r of Lee)\n ka(r);\nvar rI = O();\nrI.registerFlag(\"WASM_HAS_SIMD_SUPPORT\", async () => {\n try {\n return 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]));\n } catch (r) {\n return false;\n }\n});\nrI.registerFlag(\"WASM_HAS_MULTITHREAD_SUPPORT\", async () => {\n if (rI.get(\"IS_NODE\"))\n return false;\n try {\n 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]));\n } catch (r) {\n return false;\n }\n});\nvar cI = ap(C3());\nvar N3 = ap(w3());\nvar lI = ap(I3());\nvar v3 = cI.default || cI;\nvar Bee = lI.default || lI;\nvar Ll = class extends Zr {\n constructor(e) {\n super(), this.wasm = e, this.dataIdNextNumber = 1, this.wasm.tfjs.initWithThreadsCount(_3), pI = this.wasm.tfjs.getThreadsCount(), this.dataIdMap = new Fo(this, sr());\n }\n write(e, t10, o) {\n let n = { id: this.dataIdNextNumber++ };\n return this.move(n, e, t10, o, 1), n;\n }\n numDataIds() {\n return this.dataIdMap.numDataIds();\n }\n async time(e) {\n let t10 = y.now();\n return e(), { kernelMs: y.now() - t10 };\n }\n move(e, t10, o, n, s) {\n let a = this.dataIdNextNumber++;\n if (n === \"string\") {\n let c = t10;\n this.dataIdMap.set(e, { id: a, stringBytes: c, shape: o, dtype: n, memoryOffset: null, refCount: s });\n return;\n }\n let i = y.sizeFromShape(o), p = i * y.bytesPerElement(n), u = this.wasm._malloc(p);\n this.dataIdMap.set(e, { id: a, memoryOffset: u, shape: o, dtype: n, refCount: s }), this.wasm.tfjs.registerTensor(a, i, u), t10 != null && this.wasm.HEAPU8.set(new Uint8Array(t10.buffer, t10.byteOffset, p), u);\n }\n async read(e) {\n return this.readSync(e);\n }\n readSync(e, t10, o) {\n let { memoryOffset: n, dtype: s, shape: a, stringBytes: i } = this.dataIdMap.get(e);\n if (s === \"string\")\n return (t10 == null || t10 === 0) && (o == null || o >= i.length) ? i : i.slice(t10, o);\n t10 = t10 || 0, o = o || y.sizeFromShape(a);\n let p = y.bytesPerElement(s), u = this.wasm.HEAPU8.slice(n + t10 * p, n + o * p);\n return zee(u.buffer, s);\n }\n disposeData(e, t10 = false) {\n if (this.dataIdMap.has(e)) {\n let o = this.dataIdMap.get(e);\n if (o.refCount--, !t10 && o.refCount > 0)\n return false;\n this.wasm._free(o.memoryOffset), this.wasm.tfjs.disposeData(o.id), this.dataIdMap.delete(e);\n }\n return true;\n }\n refCount(e) {\n return this.dataIdMap.has(e) ? this.dataIdMap.get(e).refCount : 0;\n }\n incRef(e) {\n let t10 = this.dataIdMap.get(e);\n t10 != null && t10.refCount++;\n }\n floatPrecision() {\n return 32;\n }\n getMemoryOffset(e) {\n return this.dataIdMap.get(e).memoryOffset;\n }\n dispose() {\n this.wasm.tfjs.dispose(), \"PThread\" in this.wasm && this.wasm.PThread.terminateAllThreads(), this.wasm = null;\n }\n memory() {\n return { unreliable: false };\n }\n makeOutput(e, t10, o) {\n let n;\n if (o == null)\n n = this.write(null, e, t10);\n else {\n let s = this.dataIdNextNumber++;\n n = { id: s }, this.dataIdMap.set(n, { id: s, memoryOffset: o, shape: e, dtype: t10, refCount: 1 });\n let a = y.sizeFromShape(e);\n this.wasm.tfjs.registerTensor(s, a, o);\n }\n return { dataId: n, shape: e, dtype: t10 };\n }\n typedArrayFromHeap({ shape: e, dtype: t10, dataId: o }) {\n let n = this.wasm.HEAPU8.buffer, { memoryOffset: s } = this.dataIdMap.get(o), a = y.sizeFromShape(e);\n switch (t10) {\n case \"float32\":\n return new Float32Array(n, s, a);\n case \"int32\":\n return new Int32Array(n, s, a);\n case \"bool\":\n return new Uint8Array(n, s, a);\n default:\n throw new Error(`Unknown dtype ${t10}`);\n }\n }\n};\nfunction Vee(r) {\n return (e, t10) => (y.fetch(r, { credentials: \"same-origin\" }).then((o) => {\n o.ok || e.env.a(`failed to load wasm binary file at '${r}'`), o.arrayBuffer().then((n) => {\n WebAssembly.instantiate(n, e).then((s) => {\n t10(s.instance, s.module);\n });\n });\n }), {});\n}\nfunction k3(r, e, t10) {\n if (vg != null)\n return vg;\n let o = \"tfjs-backend-wasm.wasm\";\n return r && e ? o = \"tfjs-backend-wasm-threaded-simd.wasm\" : r && (o = \"tfjs-backend-wasm-simd.wasm\"), Pl != null && Pl[o] != null ? Pl[o] : t10 + o;\n}\nasync function T3() {\n let [r, e] = await Promise.all([O().getAsync(\"WASM_HAS_SIMD_SUPPORT\"), O().getAsync(\"WASM_HAS_MULTITHREAD_SUPPORT\")]);\n return new Promise((t10, o) => {\n let n = {};\n n.locateFile = (i, p) => {\n if (i.endsWith(\".worker.js\")) {\n let u = N3.wasmWorkerContents.replace(/\\n/g, \"\\\\n\"), c = new Blob([u], { type: \"application/javascript\" });\n return URL.createObjectURL(c);\n }\n return i.endsWith(\".wasm\") ? k3(r, e, Ol != null ? Ol : p) : p + i;\n }, mI && (n.instantiateWasm = Vee(k3(r, e, Ol != null ? Ol : \"\")));\n let s = false;\n n.onAbort = () => {\n if (s || Ml)\n return;\n Ml = true, o({ message: \"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\" });\n };\n let a;\n e && r && vg == null ? (n.mainScriptUrlOrBlob = new Blob([\"var WasmBackendModuleThreadedSimd = \" + v3.toString()], { type: \"text/javascript\" }), a = v3(n)) : a = Bee(n), a.then((i) => {\n s = true, Ml = false;\n let p = null;\n i.tfjs = { init: i.cwrap(\"init\", null, []), initWithThreadsCount: i.cwrap(\"init_with_threads_count\", null, [\"number\"]), getThreadsCount: i.cwrap(\"get_threads_count\", \"number\", []), registerTensor: i.cwrap(\"register_tensor\", null, [\"number\", \"number\", \"number\"]), disposeData: i.cwrap(\"dispose_data\", p, [\"number\"]), dispose: i.cwrap(\"dispose\", p, []) }, t10({ wasm: i });\n }).catch(o);\n });\n}\nfunction zee(r, e) {\n switch (e) {\n case \"float32\":\n return new Float32Array(r);\n case \"int32\":\n return new Int32Array(r);\n case \"bool\":\n return new Uint8Array(r);\n default:\n throw new Error(`Unknown dtype ${e}`);\n }\n}\nvar Wee = [\"tfjs-backend-wasm.wasm\", \"tfjs-backend-wasm-simd.wasm\", \"tfjs-backend-wasm-threaded-simd.wasm\"];\nvar vg = null;\nvar Ol = null;\nvar Pl = {};\nvar Ml = false;\nvar mI = false;\nfunction Uee(r, e = false) {\n if (nC(\"setWasmPath has been deprecated in favor of setWasmPaths and will be removed in a future release.\"), Ml)\n throw new Error(\"The WASM backend was already initialized. Make sure you call `setWasmPath()` before you call `tf.setBackend()` or `tf.ready()`\");\n vg = r, mI = e;\n}\nfunction Gee(r, e = false) {\n if (Ml)\n throw new Error(\"The WASM backend was already initialized. Make sure you call `setWasmPaths()` before you call `tf.setBackend()` or `tf.ready()`\");\n if (typeof r == \"string\")\n Ol = r;\n else {\n Pl = r;\n let t10 = Wee.filter((o) => Pl[o] == null);\n if (t10.length > 0)\n throw new Error(`There were no entries found for the following binaries: ${t10.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.`);\n }\n mI = e;\n}\nvar _3 = -1;\nvar pI = -1;\nfunction Hee(r) {\n _3 = r;\n}\nfunction Kee() {\n if (pI === -1)\n throw new Error(\"WASM backend not initialized.\");\n return pI;\n}\nvar qee = \"4.2.0\";\nvar jee = 2;\nTi(\"wasm\", async () => {\n let { wasm: r } = await T3();\n return new Ll(r);\n}, jee);\nvar ds = O();\nds.registerFlag(\"WEBGPU_DEFERRED_SUBMIT_BATCH_SIZE\", () => 15);\nds.registerFlag(\"WEBGPU_CPU_FORWARD\", () => true);\nds.registerFlag(\"WEBGPU_MATMUL_PROGRAM_TYPE\", () => -1);\nds.registerFlag(\"WEBGPU_USE_NAIVE_CONV2D_TRANSPOSE\", () => false);\nds.registerFlag(\"WEBGPU_USE_LOW_POWER_GPU\", () => false);\nds.registerFlag(\"WEBGPU_CPU_HANDOFF_SIZE_THRESHOLD\", () => 1e3);\nds.registerFlag(\"WEBGPU_USE_PROFILE_TOOL\", () => false);\nds.registerFlag(\"WEBGPU_IMPORT_EXTERNAL_TEXTURE\", () => true);\nds.registerFlag(\"WEBGPU_USE_NAIVE_CONV2D_DEBUG\", () => false);\nds.registerFlag(\"WEBGPU_THRESHOLD_TO_INCREASE_WORKGROUPS_FOR_MATMUL\", () => 0);\nds.registerFlag(\"WEBGPU_CONV_SEPARATE_IM2COL_SHADER\", () => false);\nvar kg = class {\n constructor(e) {\n e && (this.vendor = e.vendor, this.architecture = e.architecture, this.intelGPUGeneration = this.getIntelGPUGeneration());\n }\n getIntelGPUGeneration() {\n if (this.isIntel()) {\n if (this.architecture.startsWith(\"gen\"))\n return Number(this.architecture.match(/\\d+/));\n if (this.architecture.startsWith(\"xe\"))\n return 12;\n }\n return 0;\n }\n isIntel() {\n return this.vendor === \"intel\";\n }\n};\nvar Ng = class {\n constructor(e) {\n this.device = e, this.numUsedBuffers = 0, this.numFreeBuffers = 0, this.freeBuffers = /* @__PURE__ */ new Map(), this.usedBuffers = /* @__PURE__ */ new Map(), this.numBytesUsed = 0, this.numBytesAllocated = 0;\n }\n acquireUploadBuffer(e, t10) {\n return this.acquireBuffer(e, t10, true);\n }\n acquireBuffer(e, t10, o = false) {\n let n = $3(e, t10);\n if (this.freeBuffers.has(n) || this.freeBuffers.set(n, []), this.usedBuffers.has(n) || this.usedBuffers.set(n, []), this.numBytesUsed += e, this.numUsedBuffers++, this.freeBuffers.get(n).length > 0) {\n this.numFreeBuffers--;\n let a = this.freeBuffers.get(n).shift();\n return this.usedBuffers.get(n).push(a), a;\n }\n this.numBytesAllocated += e;\n let s = this.device.createBuffer({ size: e, usage: t10, mappedAtCreation: o });\n return this.usedBuffers.get(n).push(s), s;\n }\n releaseBuffer(e, t10, o) {\n if (this.freeBuffers.size === 0)\n return;\n let n = $3(t10, o);\n this.freeBuffers.has(n) || this.freeBuffers.set(n, []), this.freeBuffers.get(n).push(e), this.numFreeBuffers++, this.numUsedBuffers--;\n let s = this.usedBuffers.get(n), a = s.indexOf(e);\n if (a < 0)\n throw new Error(\"Cannot release a buffer that was never provided by this buffer manager\");\n s.splice(a, 1), this.numBytesUsed -= t10;\n }\n releaseUploadBuffer(e, t10, o) {\n e.mapAsync(GPUMapMode.WRITE).then(() => {\n this.releaseBuffer(e, t10, o);\n }, (n) => {\n });\n }\n getNumUsedBuffers() {\n return this.numUsedBuffers;\n }\n getNumFreeBuffers() {\n return this.numFreeBuffers;\n }\n dispose() {\n this.freeBuffers.forEach((e, t10) => {\n e.forEach((o) => {\n o.destroy();\n });\n }), this.usedBuffers.forEach((e, t10) => {\n e.forEach((o) => {\n o.destroy();\n });\n }), this.freeBuffers = /* @__PURE__ */ new Map(), this.usedBuffers = /* @__PURE__ */ new Map(), this.numUsedBuffers = 0, this.numFreeBuffers = 0, this.numBytesUsed = 0, this.numBytesAllocated = 0;\n }\n};\nfunction $3(r, e) {\n return `${r}_${e}`;\n}\nvar Tg = class {\n constructor(e) {\n this.device = e, this.numUsedTextures = 0, this.numFreeTextures = 0, this.freeTextures = /* @__PURE__ */ new Map(), this.usedTextures = /* @__PURE__ */ new Map(), this.numBytesUsed = 0, this.numBytesAllocated = 0;\n }\n acquireTexture(e, t10, o, n) {\n let s = A3(o), a = e * t10 * s, i = E3(e, t10, o, n);\n if (this.freeTextures.has(i) || this.freeTextures.set(i, []), this.usedTextures.has(i) || this.usedTextures.set(i, []), this.numBytesUsed += a, this.numUsedTextures++, this.freeTextures.get(i).length > 0) {\n this.numFreeTextures--;\n let u = this.freeTextures.get(i).shift();\n return this.usedTextures.get(i).push(u), u;\n }\n this.numBytesAllocated += a;\n let p = this.device.createTexture({ size: [e, t10], format: o, usage: n });\n return this.usedTextures.get(i).push(p), p;\n }\n releaseTexture(e, t10, o, n, s) {\n if (this.freeTextures.size === 0)\n return;\n let a = E3(t10, o, n, s);\n this.freeTextures.has(a) || this.freeTextures.set(a, []), this.freeTextures.get(a).push(e), this.numFreeTextures++, this.numUsedTextures--;\n let i = this.usedTextures.get(a), p = i.indexOf(e);\n if (p < 0)\n throw new Error(\"Cannot release a texture that was never provided by this texture manager\");\n i.splice(p, 1);\n let u = A3(n), c = t10 * o * u;\n this.numBytesUsed -= c;\n }\n getNumUsedTextures() {\n return this.numUsedTextures;\n }\n getNumFreeTextures() {\n return this.numFreeTextures;\n }\n dispose() {\n this.freeTextures.forEach((e, t10) => {\n e.forEach((o) => {\n o.destroy();\n });\n }), this.usedTextures.forEach((e, t10) => {\n e.forEach((o) => {\n o.destroy();\n });\n }), this.freeTextures = /* @__PURE__ */ new Map(), this.usedTextures = /* @__PURE__ */ new Map(), this.numUsedTextures = 0, this.numFreeTextures = 0, this.numBytesUsed = 0, this.numBytesAllocated = 0;\n }\n};\nfunction E3(r, e, t10, o) {\n return `${r}_${e}_${t10}_${o}`;\n}\nfunction A3(r) {\n if (r === \"rgba8unorm\")\n return 16;\n throw new Error(`${r} is not supported!`);\n}\nfunction R3(r, e) {\n if (Math.max(...r) > 3)\n throw new Error(\"Cannot symbolically compute strides for rank > 4 tensor.\");\n let t10 = r.length, o = r.map((s) => `${e}[${s}]`), n = new Array(t10 - 1);\n n[t10 - 2] = o[t10 - 1];\n for (let s = t10 - 3; s >= 0; --s)\n n[s] = `(${n[s + 1]} * ${o[s + 1]})`;\n return n;\n}\nvar Ic = (r, e, t10) => t10 === \"int32\" ? `atomicAdd(${r}, bitcast(${e}));` : `\n {\n var oldValue = 0;\n loop {\n let newValueF32 = bitcast(oldValue) + (${e});\n let newValue = bitcast(newValueF32);\n let res = atomicCompareExchangeWeak(${r}, oldValue, newValue);\n if res.exchanged {\n break;\n }\n oldValue = res.old_value;\n }\n }`;\nvar M3 = (r, e, t10, o) => {\n let n = { dtype: o.dtype, shape: o.shape }, s = Yee(t10, n, e), a = r.createShaderModule({ code: s, label: e.constructor.name });\n return r.createComputePipeline({ compute: { module: a, entryPoint: \"_start\" }, label: e.constructor.name, layout: \"auto\" });\n};\nfunction Rt(r) {\n if (r <= 1)\n return \"i32\";\n if (r === 2)\n return \"vec2\";\n if (r === 3)\n return \"vec3\";\n if (r === 4)\n return \"vec4\";\n if (r === 5)\n return \"vec5\";\n if (r === 6)\n return \"vec6\";\n throw Error(`GPU for rank ${r} is not yet supported`);\n}\nfunction Ao(r) {\n if (r === 0)\n return \"x\";\n if (r === 1)\n return \"y\";\n if (r === 2)\n return \"z\";\n if (r === 3)\n return \"w\";\n if (r === 4)\n return \"u\";\n if (r === 5)\n return \"v\";\n throw Error(`Index ${r} is not yet supported`);\n}\nfunction Q(...r) {\n let e;\n switch (r.length) {\n case 0:\n e = `\n fn main()\n `;\n break;\n case 1:\n e = `\n fn main(${r[0]} : i32)\n `;\n break;\n default:\n throw Error(\"Unreachable\");\n }\n return e;\n}\nfunction D3(r, e) {\n let t10;\n return t10 = `\n ${Xee(e)}\n fn _start(@builtin(local_invocation_id) LocalId : vec3,\n @builtin(global_invocation_id) GlobalId : vec3,\n @builtin(local_invocation_index) LocalIndex: u32,\n @builtin(workgroup_id) WorkgroupId : vec3,\n @builtin(num_workgroups) NumWorkgroups : vec3) {\n localId = LocalId;\n localIndex = LocalIndex;\n globalId = GlobalId;\n numWorkgroups = NumWorkgroups;\n workgroupId = WorkgroupId;\n ${r ? \"main(getGlobalIndex());\" : \"main();\"};\n }\n `, t10;\n}\nfunction Xee(r) {\n return `\n @compute @workgroup_size(${r.workgroupSize[0]}, ${r.workgroupSize[1]}, ${r.workgroupSize[2]})\n`;\n}\nfunction Yee(r, e, t10) {\n let o = [], n = t10.workgroupSize[0] * t10.workgroupSize[1] * t10.workgroupSize[2];\n if (o.push(`\n\n var localId: vec3;\n var localIndex: u32;\n var globalId: vec3;\n var numWorkgroups: vec3;\n var workgroupId: vec3;\n\n // Only used when the y/z dimension of workgroup size is 1.\n fn getGlobalIndex() -> i32 {\n ${B3(t10) ? \" return i32(globalId.x);\" : ` return i32((workgroupId.z * numWorkgroups.x * numWorkgroups.y +\n workgroupId.y * numWorkgroups.x + workgroupId.x) * ${n}u +\n localIndex);\n `}\n }\n `), t10.isFromPixels) {\n o.push(`\n struct Uniform {\n size : i32,\n numChannels : i32,\n outShapeStrides : vec2,\n };\n\n @group(0) @binding(0) var result: array<${vc(e.dtype, t10.isVec4)}>;\n @group(0) @binding(2) var uniforms: Uniform;\n `);\n let f = P3(t10);\n return [F3, o.join(`\n`), O3(e.shape), t10.getUserCode(), D3(f, t10)].join(`\n`);\n }\n let s = \"struct Uniforms { NAN : f32, INFINITY : f32, \";\n t10.variableNames.forEach((f, h) => {\n let g = Rt(r[h].shape.length);\n s += `${f.charAt(0).toLowerCase() + f.slice(1)}Shape : ${g}, `;\n });\n let a = Rt(e.shape.length);\n s += `outShape : ${a}, `;\n let i = e.shape.length - 1, p = Rt(i);\n s += `\n outShapeStrides: ${p}, `, t10.size && (s += \"size : i32, \"), t10.uniforms && (s += t10.uniforms), s += \"};\", s = nte(s), o.push(s), t10.atomic ? o.push(`\n @group(0) @binding(0) var result: array>;\n `) : o.push(`\n @group(0) @binding(0) var result: array<${vc(e.dtype, t10.isVec4)}>;\n `), t10.variableNames.forEach((f, h) => {\n o.push(`\n @group(0) @binding(${1 + h}) var ${f}: array<${t10.variableTypes ? t10.variableTypes[h] : vc(r[h].dtype, t10.isVec4)}>;\n `);\n }), s !== \"\" && o.push(`\n @group(0) @binding(${1 + t10.variableNames.length}) var uniforms: Uniforms;\n `);\n let u = tte(e.shape, t10.dispatchLayout), c = [F3, o.join(`\n`) + Qee, O3(e.shape), u, rte(e.shape.length)];\n t10.atomic || c.push(ote(e.shape, e.dtype, t10.isVec4));\n let l = r.map((f, h) => ete(f, e.shape, t10.variableTypes ? t10.variableTypes[h] === \"vec4\" : t10.isVec4, t10.dispatchLayout.x.length === e.shape.length)).join(`\n`);\n c.push(l), c.push(t10.getUserCode());\n let m = P3(t10);\n return c.push(D3(m, t10)), c.join(`\n`);\n}\nfunction L3(r, e, t10, o) {\n let n = r.shaderKey;\n if (r.isFromPixels)\n return n;\n let s = t10.map((c) => c.dtype).concat(o.dtype), a = t10.map((c) => S.getBroadcastDims(c.shape, o.shape)), i = t10.map((c) => y.arraysEqual(c.shape, o.shape)).join(\"_\"), p = a.map((c) => c.join(\"_\")).join(\";\"), u = B3(r) ? \"flatDispatch\" : \"\";\n return n += \"_\" + (r.workgroupSize ? r.workgroupSize.join(\",\") : \"\") + e.map((c) => c.length).join(\",\") + s.join(\",\") + r.variableNames.join(\",\") + p + i + u, n;\n}\nvar F3 = `\n struct vec5 {x: i32, y: i32, z: i32, w: i32, u: i32};\n struct vec6 {x: i32, y: i32, z: i32, w: i32, u: i32, v: i32};\n\n // Checks whether coordinates lie within the bounds of the shape.\n fn coordsInBounds2D(coord : vec2, shape : vec2) -> bool {\n return all(coord >= vec2(0)) && all(coord < shape);\n }\n fn coordsInBounds3D(coord : vec3, shape : vec3) -> bool {\n return all(coord >= vec3(0)) && all(coord < shape);\n }\n fn coordsInBounds4D(coord : vec4, shape : vec4) -> bool {\n return all(coord >= vec4(0)) && all(coord < shape);\n }\n\n fn getIndexFromCoords1D(coord : i32, shape : i32) -> i32 {\n return coord;\n }\n fn getIndexFromCoords2D(coords : vec2, shape : vec2) -> i32 {\n return dot(coords, vec2(shape.y, 1));\n }\n fn getIndexFromCoords3D(coords : vec3, shape : vec3) -> i32 {\n return dot(coords, vec3(shape.y * shape.z, shape.z, 1));\n }\n fn getIndexFromCoords4D(coords : vec4, shape : vec4) -> i32 {\n return dot(coords, vec4(\n shape.y * shape.z * shape.w, shape.z * shape.w, shape.w, 1));\n }\n fn getIndexFromCoords5D(coords : vec5, shape : vec5) -> i32 {\n let shapeStrides: vec5 = vec5(shape.y * shape.z * shape.w * shape.u, shape.z * shape.w * shape.u, shape.w * shape.u, shape.u, 1);\n return coords.x*shapeStrides.x + coords.y*shapeStrides.y + coords.z*shapeStrides.z + coords.w*shapeStrides.w + coords.u*shapeStrides.u;\n }\n fn getIndexFromCoords6D(coords : vec6, shape : vec6) -> i32 {\n let shapeStrides: vec6 = vec6(shape.y * shape.z * shape.w * shape.u * shape.v, shape.z * shape.w * shape.u * shape.v, shape.w * shape.u * shape.v, shape.u * shape.v, shape.v, 1);\n return coords.x*shapeStrides.x + coords.y*shapeStrides.y + coords.z*shapeStrides.z + coords.w*shapeStrides.w + coords.u*shapeStrides.u + coords.v*shapeStrides.v;\n }\n\n fn idiv(a: i32, b: i32, sign: f32) -> i32 {\n var res: i32 = a / b;\n let modulo: i32 = a % b;\n if (sign < 0. && modulo != 0) {\n res = res - 1;\n }\n return res;\n }\n\n // NaN defination in IEEE 754-1985 is :\n // - sign = either 0 or 1.\n // - biased exponent = all 1 bits.\n // - fraction = anything except all 0 bits (since all 0 bits represents infinity).\n // https://en.wikipedia.org/wiki/IEEE_754-1985#Representation_of_non-numbers\n fn isnan(val: f32) -> bool {\n let floatToUint: u32 = bitcast(val);\n return (floatToUint & 0x7fffffffu) > 0x7f800000u;\n }\n fn isnanVec4(val : vec4) -> vec4 {\n let floatToUint: vec4 = bitcast>(val);\n return (floatToUint & vec4(0x7fffffffu)) > vec4(0x7f800000u);\n }\n`;\nvar Qee = `\n fn isinf(val: f32) -> bool {\n return abs(val) == uniforms.INFINITY;\n }\n`;\nfunction O3(r) {\n let e = r.length;\n if (e <= 1)\n return \"fn getCoordsFromIndex(index : i32) -> i32 { return index; }\";\n let t10 = y.computeStrides(r), o = Rt(e), n = [];\n for (let a = 0; a < e; a++)\n n.push(`d${a}`);\n if (t10.length === 1)\n return ` fn getCoordsFromIndex(index : i32) -> vec2 {\n let d0 = index / uniforms.outShapeStrides; let d1 = index - d0 * uniforms.outShapeStrides;\n return vec2(d0, d1);\n }`;\n let s;\n return s = \"var index2 = index;\" + t10.map((a, i) => {\n let p = `let ${n[i]} = index2 / uniforms.outShapeStrides.${Ao(i)}`, u = i === t10.length - 1 ? `let ${n[i + 1]} = index2 - ${n[i]} * uniforms.outShapeStrides.${Ao(i)}` : `index2 = index2 - ${n[i]} * uniforms.outShapeStrides.${Ao(i)}`;\n return `${p}; ${u};`;\n }).join(\"\"), `\n fn getCoordsFromIndex(index : i32) -> ${o} {\n ${s}\n return ${o}(${n.join(\",\")});\n }\n `;\n}\nfunction Zee(r, e) {\n let t10 = r.name, o = r.shape.length, n = Rt(o), s = \"get\" + t10.charAt(0).toUpperCase() + t10.slice(1), a = [\"d0\", \"d1\", \"d2\", \"d3\", \"d4\", \"d5\"].slice(0, o), i = a.map((c) => `${c} : i32`).join(\", \");\n if (o < 1)\n return e ? `\n fn ${s}() -> vec4 {\n return vec4(${t10}[0]);\n }\n ` : `\n fn ${s}() ->f32 {\n return f32(${t10}[0]);\n }\n `;\n let p = `uniforms.${t10.charAt(0).toLowerCase() + t10.slice(1)}Shape`, u = `${o}D`;\n return o === 0 && (u = \"1D\"), e ? `\n fn ${s}(${i}) -> vec4 {\n return vec4(${t10}[getIndexFromCoords${u}(${n}(${a.join(\",\")}),\n ${p}) / 4]);\n }\n ` : `\n fn ${s}(${i}) -> f32 {\n return f32(${t10}[getIndexFromCoords${u}(${n}(${a.join(\",\")}),\n ${p})]);\n }\n `;\n}\nfunction Jee(r, e, t10, o) {\n let n = r.name, s = n.charAt(0).toUpperCase() + n.slice(1), a = \"get\" + s + \"ByOutput\", i = r.shape.length, p = e.length, u = Rt(p);\n if (y.arraysEqual(r.shape, e) && o)\n return t10 ? `\n fn ${a}Index(globalIndex : i32) -> vec4 {\n return vec4(${n}[globalIndex]);\n }\n\n fn ${a}Coords(coords : ${u}) -> vec4 {\n return vec4(${n}[${p > 1 ? \"getOutputIndexFromCoords(coords)\" : \"coords\"} / 4]);\n }\n ` : `\n fn ${a}Index(globalIndex : i32) -> f32 {\n return f32(${n}[globalIndex]);\n }\n\n fn ${a}Coords(coords : ${u}) -> f32 {\n return f32(${n}[${p > 1 ? \"getOutputIndexFromCoords(coords)\" : \"coords\"}]);\n }\n `;\n let c = S.getBroadcastDims(r.shape, e), l = p - i, m = \"\";\n if (i === 0)\n return t10 ? `\n fn ${a}Index(globalIndex : i32) -> vec4 {\n return get${s}();\n }\n\n fn ${a}Coords(coords : ${u}) -> vec4 {\n return get${s}();\n }\n ` : `\n fn ${a}Index(globalIndex : i32) -> f32{\n return get${s}();\n }\n\n fn ${a}Coords(coords : ${u}) -> f32{\n return get${s}();\n }\n `;\n p < 2 && c.length >= 1 ? m = \"coords = 0;\" : m = c.map((g) => `coords.${Ao(g + l)} = 0;`).join(`\n`);\n let d = \"\";\n if (p < 2 && i > 0)\n d = \"coords\";\n else if (p > 1) {\n let g = Rt(i), x = r.shape.map((b, C) => `coords.${Ao(C + l)}`).join(\", \");\n d = `${g}(${x})`;\n } else\n d = \"coords\";\n let f = `uniforms.${n.charAt(0).toLowerCase() + n.slice(1)}Shape`, h = `${i}D`;\n return t10 ? `\n fn ${a}Index(globalIndex : i32) -> vec4 {\n var coords = getCoordsFromIndex(globalIndex);\n ${m}\n return ${n}[getIndexFromCoords${h}(${d}, ${f}) / 4];\n }\n\n fn ${a}Coords(coordsIn : ${u}) -> vec4 {\n var coords = coordsIn;\n ${m}\n return ${n}[getIndexFromCoords${h}(${d}, ${f}) / 4];\n }\n ` : `\n fn ${a}Index(globalIndex : i32) -> f32 {\n var coords = getCoordsFromIndex(globalIndex);\n ${m}\n return f32(${n}[getIndexFromCoords${h}(${d}, ${f})]);\n }\n\n fn ${a}Coords(coordsIn : ${u}) -> f32 {\n var coords = coordsIn;\n ${m}\n return f32(${n}[getIndexFromCoords${h}(${d}, ${f})]);\n }\n`;\n}\nfunction ete(r, e, t10, o) {\n let n = Zee(r, t10);\n return r.shape.length <= e.length && (n += Jee(r, e, t10, o)), n;\n}\nfunction tte(r, e) {\n let { x: t10, y: o = [], z: n = [] } = e, s = r.length, a = t10.length + o.length + n.length;\n if (a !== s)\n return \"\";\n if (t10.length === s)\n return `fn getOutputCoords() -> ${Rt(s)}{\n let globalIndex = getGlobalIndex();\n return getCoordsFromIndex(globalIndex);\n }\n `;\n let i = \"\", p = [t10, o, n];\n for (let m = 0; m < p.length; m++) {\n let d = p[m];\n if (d.length !== 0)\n if (d.length === 1)\n i += `let d${d[0]} = i32(globalId[${m}]);`;\n else {\n let f = R3(d, \"uniforms.outShape\");\n i += `var index${m} = i32(globalId[${m}]);`;\n for (let h = 0; h < f.length; h++)\n i += `let d${d[h]} = index${m} / ${f[h]};`, h === f.length - 1 ? i += `let d${d[h + 1]} = index${m} - d${d[h]} * ${f[h]};` : i += `index${m} = index${m} - d${d[h]} * ${f[h]};`;\n }\n }\n let u = [];\n for (let m = 0; m < a; m++)\n u.push(`d${m}`);\n let c = Rt(a), l = `fn getOutputCoords() -> ${c} {\n ${i}\n`;\n return u.length === 0 ? l += `return ${c}(0); }` : l += `return ${c}(${u.join(\",\")}); }`, l;\n}\nfunction rte(r) {\n let e = \"\";\n switch (r) {\n case 0:\n case 1:\n e += `\n fn getOutputIndexFromCoords(coords : i32) -> i32 {\n return coords;\n }\n `;\n break;\n case 2:\n e += `\n fn getOutputIndexFromCoords(coords : vec2) -> i32 {\n return dot(coords, vec2(uniforms.outShapeStrides, 1));\n }\n `;\n break;\n case 3:\n e += `\n fn getOutputIndexFromCoords(coords : vec3) -> i32 {\n return dot(coords, vec3(uniforms.outShapeStrides.x, uniforms.outShapeStrides.y, 1));\n }\n `;\n break;\n case 4:\n e += `\n fn getOutputIndexFromCoords(coords : vec4) -> i32 {\n return dot(coords, vec4(\n uniforms.outShapeStrides.x, uniforms.outShapeStrides.y, uniforms.outShapeStrides.z, 1));\n }\n `;\n break;\n case 5:\n e += `\n fn getOutputIndexFromCoords(coords : vec5) -> i32 {\n return coords.x * uniforms.outShapeStrides.x +\n coords.y * uniforms.outShapeStrides.y +\n coords.z * uniforms.outShapeStrides.z +\n coords.w * uniforms.outShapeStrides.w +\n coords.u;\n }\n `;\n break;\n case 6:\n e += `\n fn getOutputIndexFromCoords(coords : vec6) -> i32 {\n return coords.x * uniforms.outShapeStrides.x +\n coords.y * uniforms.outShapeStrides.y +\n coords.z * uniforms.outShapeStrides.z +\n coords.w * uniforms.outShapeStrides.w +\n coords.u * uniforms.outShapeStrides.u +\n coords.v;\n }\n `;\n break;\n default:\n y.assert(false, () => `Unsupported ${r}D shape`);\n break;\n }\n return e;\n}\nfunction B3(r) {\n return r.dispatch[1] === 1 && r.dispatch[2] === 1;\n}\nfunction vc(r, e) {\n return r === \"float32\" ? e ? \"vec4\" : \"f32\" : r === \"int32\" || r === \"bool\" ? e ? \"vec4\" : \"i32\" : r;\n}\nfunction ote(r, e, t10) {\n let o = r.length, n = vc(e, t10), s;\n if (t10 ? s = `fn setOutputAtIndex(flatIndex : i32, value : vec4) {\n result[flatIndex] = ${n}(value);\n }\n fn setOutputAtIndexI32(flatIndex : i32, value : vec4) {\n result[flatIndex] = ${n}(value);\n }` : s = `fn setOutputAtIndex(flatIndex : i32, value : f32) {\n result[flatIndex] = ${n}(value);\n }\n fn setOutputAtIndexI32(flatIndex : i32, value : i32) {\n result[flatIndex] = ${n}(value);\n }`, o >= 2) {\n let a = [\"d0\", \"d1\", \"d2\", \"d3\", \"d4\", \"d5\"].slice(0, o), i = Rt(o);\n t10 ? s += `\n fn setOutputAtCoords(${a.map((p) => `${p} : i32`).join(\", \")}, value : vec4) {\n let flatIndex = getOutputIndexFromCoords(${i}(${a.join(\", \")}));\n setOutputAtIndex(flatIndex / 4, value);\n }\n fn setOutputAtCoordsI32(${a.map((p) => `${p} : i32`).join(\", \")}, value : vec4) {\n let flatIndex = getOutputIndexFromCoords(${i}(${a.join(\", \")}));\n setOutputAtIndexI32(flatIndex / 4, value);\n }\n ` : s += `\n fn setOutputAtCoords(${a.map((p) => `${p} : i32`).join(\", \")}, value : f32) {\n let flatIndex = getOutputIndexFromCoords(${i}(${a.join(\", \")}));\n setOutputAtIndex(flatIndex, value);\n }\n fn setOutputAtCoordsI32(${a.map((p) => `${p} : i32`).join(\", \")}, value : i32) {\n let flatIndex = getOutputIndexFromCoords(${i}(${a.join(\", \")}));\n setOutputAtIndexI32(flatIndex, value);\n }\n `;\n }\n return s;\n}\nfunction nte(r) {\n let e = /(\\w+)\\s*:\\s*vec(5|6)/g;\n r = r.replace(e, (o) => \"@align(16) \" + o);\n let t10 = /vec(5|6)\\s*,\\s*(\\w+)/g;\n return r = r.replace(t10, (o, n, s) => `vec${n}, @align(16) ${s}`), r;\n}\nfunction P3(r) {\n return !(r.dispatchLayout.hasOwnProperty(\"y\") && r.dispatchLayout.y.length !== 0 || r.dispatchLayout.hasOwnProperty(\"z\") && r.dispatchLayout.z.length !== 0);\n}\nvar hI = {};\nGe(hI, { GPUBytesPerElement: () => _g, MatMulProgramType: () => Ro, assertNotComplex: () => fI, computeDispatch: () => Y, computeWorkPerThreadForConv2d: () => Vl, computeWorkgroupInfoForMatMul: () => dI, computeWorkgroupSizeForConv2d: () => Bl, flatDispatchLayout: () => ae, isWebGPUSupported: () => zl, tilesFitEvenlyIntoShape: () => ate });\nvar Ku = (r) => {\n let e = 1;\n for (let t10 = 0; t10 < r.length; t10++)\n e *= r[t10];\n return e;\n};\nfunction ate(r, e) {\n if (r.length !== e.length)\n throw new Error(`Cannot compute whether rank ${r.length} tiles fit evenly into rank ${e.length} shape - ranks must match.`);\n return e.every((t10, o) => t10 % r[o] === 0);\n}\nfunction Y(r, e, t10 = [1, 1, 1], o = [1, 1, 1]) {\n let [n, s, a] = [Math.ceil(Ku(r.x.map((i) => e[i])) / (t10[0] * o[0])), r.y ? Math.ceil(Ku(r.y.map((i) => e[i])) / (t10[1] * o[1])) : 1, r.z ? Math.ceil(Ku(r.z.map((i) => e[i])) / (t10[2] * o[2])) : 1];\n return [n, s, a];\n}\nfunction dI(r, e, t10, o = false) {\n let n = [8, 8, 1], s = [4, 4, 1];\n return o || (r <= 8 && (s[1] = 1), e <= 16 && t10 <= 16 && (n[0] = 4)), { workgroupSize: n, elementsPerThread: s };\n}\nfunction Bl(r, e, t10 = false) {\n if (t10)\n return [8, 8, 1];\n let o = Ku(r.x.map((s) => e[s])), n = Ku(r.y.map((s) => e[s]));\n return o <= 4 ? [4, 16, 1] : n <= 4 ? [16, 4, 1] : [16, 16, 1];\n}\nfunction Vl(r, e, t10 = false) {\n if (t10)\n return [4, 4, 1];\n let o = Ku(r.x.map((s) => e[s])), n = Ku(r.y.map((s) => e[s]));\n return o <= 4 ? [1, 2, 1] : n <= 4 ? [2, 1, 1] : [2, 2, 1];\n}\nfunction ae(r) {\n return { x: r.map((e, t10) => t10) };\n}\nfunction _g(r) {\n if (r === \"float32\" || r === \"int32\" || r === \"bool\" || r === \"string\")\n return 4;\n if (r === \"complex64\")\n return 8;\n throw new Error(`Unknown dtype ${r}`);\n}\nfunction zl() {\n return (typeof window != \"undefined\" || typeof WorkerGlobalScope != \"undefined\") && !!navigator.gpu;\n}\nfunction fI(r, e) {\n Array.isArray(r) || (r = [r]), r.forEach((t10) => {\n t10 != null && y.assert(t10.dtype !== \"complex64\", () => `${e} does not support complex64 tensors in the WebGPU backend.`);\n });\n}\nvar Ro;\n(function(r) {\n r[r.MatMulReduceProgram = 0] = \"MatMulReduceProgram\", r[r.MatMulSplitKProgram = 1] = \"MatMulSplitKProgram\", r[r.MatMulSmallOutputSizeProgram = 2] = \"MatMulSmallOutputSizeProgram\", r[r.MatMulPackedProgram = 3] = \"MatMulPackedProgram\", r[r.MatMulMax = 4] = \"MatMulMax\";\n})(Ro || (Ro = {}));\nvar ite = O().getNumber(\"WEBGPU_CPU_HANDOFF_SIZE_THRESHOLD\");\nvar ute = (r, e) => {\n let t10 = r.limits.maxComputeWorkgroupsPerDimension, o = e.dispatchLayout, n = e.dispatch;\n if (n.every((a) => a <= t10))\n return n;\n y.assert(n[0] > t10 && o.y === void 0 && o.z === void 0, () => \"Dispatch size exceeds WebGPU limits in Y or Z dimension.\");\n let s = Math.ceil(Math.sqrt(n[0]));\n return s > t10 ? (s = Math.ceil(Math.cbrt(n[0])), y.assert(s <= t10, () => \"Total dispatch size exceeds WebGPU maximum.\"), [s, s, s]) : [s, s, 1];\n};\nvar Gi = class extends Zr {\n constructor(e, t10) {\n if (super(), this.commandQueueOwnedIds = /* @__PURE__ */ new WeakSet(), this.dispatchNumberInEncoder = 0, this.disposed = false, this.downloadWaitMs = 0, this.tensorDataPendingDisposal = [], this.stagingPendingDisposal = [], this.uniformPendingDisposal = [], this.uploadWaitMs = 0, !zl())\n throw new Error(\"WebGPU is not supported on this device\");\n this.pipelineCache = {}, this.device = e, this.queue = e.queue, this.currentCommandEncoder = null, this.currentComputePass = null, this.supportTimeQuery = e.features.has(\"timestamp-query-inside-passes\"), this.adapterInfo = new kg(t10), this.thresholdToIncreaseWorkgroups = this.adapterInfo.intelGPUGeneration >= 12 ? 16 : 8, this.bufferManager = new Ng(this.device), this.textureManager = new Tg(this.device), this.tensorMap = new Fo(this, sr()), this.supportTimeQuery && (this.querySet = this.device.createQuerySet({ type: \"timestamp\", count: 2 })), O().getBool(\"WEBGPU_USE_PROFILE_TOOL\") && (this.dummyCanvas = document.createElement(\"canvas\"), this.dummyCanvas.width = 1, this.dummyCanvas.height = 1, this.dummyContext = this.dummyCanvas.getContext(\"webgpu\"), this.dummyContext.configure({ device: e, format: \"bgra8unorm\" }), document.body.appendChild(this.dummyCanvas));\n }\n nextDataId() {\n return Gi.nextDataId++;\n }\n floatPrecision() {\n return 32;\n }\n defaultGpuBufferUsage() {\n return GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST;\n }\n disposeData(e, t10 = false) {\n if (this.tensorDataPendingDisposal.indexOf(e) >= 0)\n return false;\n if (!this.tensorMap.has(e))\n return true;\n let o = this.tensorMap.get(e);\n if (this.decRef(e), !t10 && o.refCount > 0)\n return false;\n if (this.commandQueueOwnedIds.has(e))\n return this.tensorDataPendingDisposal.push(e), false;\n let { complexTensorInfos: n } = this.tensorMap.get(e);\n return n != null && (this.disposeData(n.real.dataId, t10), this.disposeData(n.imag.dataId, t10)), this.releaseResource(e), this.tensorMap.delete(e), true;\n }\n memory() {\n return { numBytesInGPU: this.bufferManager.numBytesUsed, numBytesAllocatedInGPU: this.bufferManager.numBytesAllocated, unreliable: false };\n }\n releaseResource(e) {\n let t10 = this.tensorMap.get(e);\n if (!(!t10 || !t10.resourceInfo)) {\n if (t10.external) {\n t10.resourceInfo = null;\n return;\n }\n if (\"texture\" in t10.resourceInfo) {\n let o = t10.resourceInfo;\n o.texture instanceof GPUTexture && this.textureManager.releaseTexture(o.texture, o.width, o.height, o.format, o.usage), o.texture = null;\n } else {\n let o = t10.resourceInfo;\n this.bufferManager.releaseBuffer(o.buffer, o.size, o.usage), o.buffer = null;\n }\n t10.resourceInfo = null;\n }\n }\n refCount(e) {\n return this.tensorMap.has(e) ? this.tensorMap.get(e).refCount : 0;\n }\n incRef(e) {\n let t10 = this.tensorMap.get(e);\n t10.refCount++;\n }\n decRef(e) {\n if (this.tensorMap.has(e)) {\n let t10 = this.tensorMap.get(e);\n t10.refCount--;\n }\n }\n write(e, t10, o) {\n if (o === \"complex64\" && e != null)\n throw new Error(\"Cannot write to a complex64 dtype. Please use tf.complex(real, imag).\");\n let n = { id: this.nextDataId() };\n return this.tensorMap.set(n, { dtype: o, shape: t10, values: e, refCount: 1 }), n;\n }\n move(e, t10, o, n, s) {\n if (n === \"complex64\")\n throw new Error(\"Cannot write to a complex64 dtype. Please use tf.complex(real, imag).\");\n this.tensorMap.set(e, { dtype: n, shape: o, values: t10, refCount: s });\n }\n submitQueue() {\n this.ensureComputePassEnded(), this.queue.submit([this.currentCommandEncoder.finish()]), this.currentCommandEncoder = null, this.dispatchNumberInEncoder = 0, this.commandQueueOwnedIds = /* @__PURE__ */ new WeakSet(), this.tensorDataPendingDisposal.forEach((e) => {\n this.releaseResource(e), this.tensorMap.delete(e);\n }), this.uniformPendingDisposal.forEach((e) => this.bufferManager.releaseBuffer(e.buffer, e.size, e.usage)), this.stagingPendingDisposal.forEach((e) => this.bufferManager.releaseUploadBuffer(e.buffer, e.size, e.usage)), this.tensorDataPendingDisposal = [], this.uniformPendingDisposal = [], this.stagingPendingDisposal = [];\n }\n ensureCommandEncoderReady() {\n this.currentCommandEncoder || (this.currentCommandEncoder = this.device.createCommandEncoder());\n }\n ensureComputePassEnded() {\n this.currentComputePass && (this.currentComputePass.end(), this.currentComputePass = null);\n }\n getComputePass() {\n return this.currentComputePass || (this.currentComputePass = this.currentCommandEncoder.beginComputePass()), this.currentComputePass;\n }\n async getBufferData(e, t10) {\n let o = this.bufferManager.acquireBuffer(t10, GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ);\n this.ensureCommandEncoderReady(), this.ensureComputePassEnded(), this.currentCommandEncoder.copyBufferToBuffer(e, 0, o, 0, t10), this.submitQueue(), await o.mapAsync(GPUMapMode.READ);\n let n = o.getMappedRange().slice(0);\n return o.unmap(), o != null && this.bufferManager.releaseBuffer(o, t10, GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ), O().getBool(\"WEBGPU_USE_PROFILE_TOOL\") && (y.assert(this.dummyContext !== void 0, () => \"Fail to get context for profiling tool\"), this.dummyContext.getCurrentTexture()), n;\n }\n convertAndCacheOnCPU(e, t10) {\n let o = this.tensorMap.get(e);\n return this.releaseResource(e), o.values = t10, o.values;\n }\n readSync(e) {\n let t10 = this.tensorMap.get(e), { values: o } = t10;\n if (o == null)\n throw new Error(\"WebGPU readSync is only available for CPU-resident tensors.\");\n return o;\n }\n async read(e) {\n if (!this.tensorMap.has(e))\n throw new Error(`Tensor ${e} was not registered!`);\n let t10 = this.tensorMap.get(e), { values: o } = t10;\n if (o != null)\n return this.convertAndCacheOnCPU(e, o);\n let n;\n if (t10.dtype === \"complex64\") {\n let s = await Promise.all([this.read(t10.complexTensorInfos.real.dataId), this.read(t10.complexTensorInfos.imag.dataId)]), a = s[0], i = s[1];\n n = S.mergeRealAndImagArrays(a, i);\n } else {\n let s = t10.resourceInfo, a = await this.getBufferData(s.buffer, s.size);\n n = y.convertBackendValuesAndArrayBuffer(a, t10.dtype);\n }\n return this.convertAndCacheOnCPU(e, n), n;\n }\n copyBuffer(e, t10, o) {\n let n = this.bufferManager.acquireBuffer(t10, o);\n return this.ensureCommandEncoderReady(), this.ensureComputePassEnded(), this.currentCommandEncoder.copyBufferToBuffer(e, 0, n, 0, t10), this.submitQueue(), n;\n }\n createTensorFromGPUData(e, t10, o) {\n let n = e.buffer;\n if (o === \"complex64\")\n throw new Error(\"Cannot write to a complex64 dtype. \");\n let s = { id: this.nextDataId() };\n this.tensorMap.set(s, { dtype: o, shape: t10, values: null, refCount: 1, external: e.zeroCopy });\n let a = this.tensorMap.get(s), i = _g(a.dtype) * y.sizeFromShape(a.shape);\n if (e.buffer.size < i)\n throw new Error(`GPUBuffer size(${e.buffer.size}) is smaller than tensor size(${i})!`);\n if ((e.buffer.usage & (GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC)) !== (GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC))\n throw new Error(\"GPUBuffer.usage should include GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC!\");\n return e.zeroCopy !== true && (n = this.copyBuffer(n, i, n.usage)), a.resourceInfo = { size: n.size, usage: n.usage, buffer: n }, sr().makeTensorFromDataId(s, t10, o, this);\n }\n readToGPU(e) {\n let t10 = this.tensorMap.get(e), { values: o, dtype: n, shape: s, resourceInfo: a } = t10;\n if (n === \"complex64\")\n throw new Error(\"Does not support reading buffer for complex64 dtype.\");\n if (a == null)\n throw o != null ? new Error(\"Data is not on GPU but on CPU.\") : new Error(\"There is no data on GPU or CPU.\");\n let i = a.size, p = this.bufferManager.acquireBuffer(i, a.usage);\n this.ensureCommandEncoderReady(), this.ensureComputePassEnded(), this.currentCommandEncoder.copyBufferToBuffer(a.buffer, 0, p, 0, i), this.submitQueue();\n let u = this.makeTensorInfo(s, n), c = sr().makeTensorFromTensorInfo(u), l = this.tensorMap.get(u.dataId);\n return l.resourceInfo = { size: i, usage: this.defaultGpuBufferUsage(), buffer: p }, { tensorRef: c, buffer: p, bufSize: i };\n }\n bufferSync(e) {\n let t10 = this.readSync(e.dataId);\n if (e.dtype === \"string\")\n try {\n let o = t10.map((n) => y.decodeString(n));\n return le(e.shape, e.dtype, o);\n } catch (o) {\n throw new Error(\"Failed to decode encoded string bytes into utf-8\");\n }\n return le(e.shape, e.dtype, t10);\n }\n async time(e) {\n this.supportTimeQuery || console.warn(\"This device doesn't support timestamp-query-inside-passes extension. Start Chrome browser with flag --disable-dawn-features=disallow_unsafe_apis then try again. Otherwise, zero will be shown for the kernel time when profiling mode is enabled. Using performance.now is not workable for webgpu since it doesn't support synchronous data read from GPU.\");\n let t10 = this.activeTimers, o = [], n = false;\n this.programTimersStack == null ? (this.programTimersStack = o, n = true) : this.activeTimers.push(o), this.activeTimers = o, e();\n let s = y.flatten(this.activeTimers.map((u) => u.query)).filter((u) => u != null), a = y.flatten(this.activeTimers.map((u) => u.name)).filter((u) => u != null);\n this.activeTimers = t10, n && (this.programTimersStack = null);\n let i = { uploadWaitMs: this.uploadWaitMs, downloadWaitMs: this.downloadWaitMs, kernelMs: null, wallMs: null }, p = await Promise.all(s);\n return i.kernelMs = y.sum(p), i.getExtraProfileInfo = () => p.map((u, c) => ({ name: a[c], ms: u })).map((u) => `${u.name}: ${u.ms}`).join(\", \"), this.uploadWaitMs = 0, this.downloadWaitMs = 0, i;\n }\n makeTensorInfo(e, t10, o) {\n return t10 === \"string\" && o != null && o.length > 0 && y.isString(o[0]) && (o = o.map((s) => y.encodeString(s))), { dataId: this.write(o, e, t10), shape: e, dtype: t10 };\n }\n tensorToBinding(e) {\n if (!e)\n return null;\n let t10 = this.tensorMap.get(e.dataId);\n if (\"texture\" in t10.resourceInfo) {\n let n = t10.resourceInfo;\n return n.texture instanceof GPUExternalTexture ? n.texture : n.texture.createView();\n }\n let o = t10.resourceInfo;\n return { offset: 0, size: o.size, buffer: o.buffer };\n }\n async getQueryTime(e) {\n return this.supportTimeQuery ? this.getTimeFromQuerySet(e) : 0;\n }\n uploadToGPU(e) {\n let t10 = this.tensorMap.get(e);\n if (t10.resourceInfo)\n return;\n let o = _g(t10.dtype) * y.sizeFromShape(t10.shape), n = this.bufferManager.acquireBuffer(o, this.defaultGpuBufferUsage());\n if (t10.resourceInfo = { size: o, usage: this.defaultGpuBufferUsage(), buffer: n }, t10.values) {\n let s = this.bufferManager.acquireUploadBuffer(o, GPUBufferUsage.MAP_WRITE | GPUBufferUsage.COPY_SRC), a = s.getMappedRange();\n t10.dtype === \"int32\" || t10.dtype === \"bool\" ? new Int32Array(a).set(t10.values) : new Float32Array(a).set(t10.values), s.unmap(), this.ensureCommandEncoderReady(), this.ensureComputePassEnded(), this.currentCommandEncoder.copyBufferToBuffer(s, 0, n, 0, o);\n let i = { size: o, usage: GPUBufferUsage.MAP_WRITE | GPUBufferUsage.COPY_SRC, buffer: s };\n this.stagingPendingDisposal.push(i);\n }\n }\n makeUniforms(e) {\n let t10 = 0, o = 0, n = [], s = 1;\n e.forEach((u) => {\n u.data.length === 0 && (u.data = [1]);\n let c;\n switch (u.data.length) {\n case 1:\n c = 4;\n break;\n case 2:\n c = 8;\n break;\n case 3:\n c = 16;\n break;\n case 4:\n c = 16;\n break;\n case 5:\n c = 16;\n break;\n case 6:\n c = 16;\n break;\n default:\n y.assert(false, () => `Unsupported ${u.data.length}D shape`);\n }\n (o === 5 || o === 6) && (c = 16), c > s && (s = c), t10 = Math.ceil(t10 / c) * c, o = u.data.length, n.push(t10), t10 += u.data.length * 4;\n }), t10 = Math.ceil(t10 / s) * s;\n let a = new ArrayBuffer(t10);\n e.forEach((u, c) => {\n let l = n[c];\n u.type === \"int32\" ? new Int32Array(a, l, u.data.length).set(u.data) : u.type === \"uint32\" ? new Uint32Array(a, l, u.data.length).set(u.data) : new Float32Array(a, l, u.data.length).set(u.data);\n });\n let i = this.bufferManager.acquireBuffer(t10, GPUBufferUsage.COPY_DST | GPUBufferUsage.UNIFORM);\n this.queue.writeBuffer(i, 0, a, 0, t10);\n let p = { size: t10, usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.UNIFORM, buffer: i };\n return this.uniformPendingDisposal.push(p), { offset: 0, size: t10, buffer: i };\n }\n runWebGPUProgram(e, t10, o, n, s) {\n if (s || (s = this.makeTensorInfo(e.outputShape, o)), y.sizeFromShape(s.shape) === 0)\n return this.tensorMap.get(s.dataId).values = y.getTypedArrayFromDType(s.dtype, 0), s;\n this.uploadToGPU(s.dataId), e.dispatch = ute(this.device, e);\n let a = [], i = [];\n if (!e.isFromPixels) {\n a.push({ type: \"float32\", data: [NaN] }, { type: \"float32\", data: [1 / 0] }), i = t10.concat(s).map((x) => x.shape);\n let h = \"int32\";\n i.map((x) => {\n a.push({ type: h, data: x });\n });\n let g = y.computeStrides(s.shape);\n if (a.push({ type: h, data: g }), e.size) {\n let x = y.sizeFromShape(e.outputShape);\n a.push({ type: h, data: [e.isVec4 ? x / 4 : x] });\n }\n }\n let p = t10.map((h, g) => {\n if (h.dtype === \"complex64\")\n throw new Error(\"GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.\");\n return this.uploadToGPU(h.dataId), { dtype: this.tensorMap.get(h.dataId).dtype, shape: h.shape, name: e.variableNames[g] };\n }), u = L3(e, i, p, s), c;\n u in this.pipelineCache ? c = this.pipelineCache[u] : (c = M3(this.device, e, p, s), this.pipelineCache[u] = c), n && (a = [...a, ...n]);\n let l = [this.tensorToBinding(s), ...t10.map((h) => this.tensorToBinding(h)), this.makeUniforms(a)], m = this.device.createBindGroup({ layout: c.getBindGroupLayout(0), entries: l.map((h, g) => ({ binding: g, resource: h })) });\n this.ensureCommandEncoderReady();\n let d = this.getComputePass(), f = this.activeTimers != null;\n return f && this.supportTimeQuery && d.writeTimestamp(this.querySet, 0), d.setPipeline(c), d.setBindGroup(0, m), d.dispatchWorkgroups(e.dispatch[0], e.dispatch[1], e.dispatch[2]), f && this.supportTimeQuery && d.writeTimestamp(this.querySet, 1), this.dispatchNumberInEncoder++, t10.forEach((h) => {\n this.commandQueueOwnedIds.add(h.dataId);\n }), this.commandQueueOwnedIds.add(s.dataId), O().get(\"WEBGPU_DEFERRED_SUBMIT_BATCH_SIZE\") <= this.dispatchNumberInEncoder && this.submitQueue(), f && this.activeTimers.push({ name: e.constructor.name, query: this.getQueryTime(this.querySet) }), s;\n }\n async getTimeFromQuerySet(e) {\n let t10 = this.bufferManager.acquireBuffer(16, GPUBufferUsage.COPY_SRC | GPUBufferUsage.QUERY_RESOLVE), o = this.bufferManager.acquireBuffer(16, GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST);\n this.ensureCommandEncoderReady(), this.ensureComputePassEnded(), this.currentCommandEncoder.resolveQuerySet(e, 0, 2, t10, 0), this.currentCommandEncoder.copyBufferToBuffer(t10, 0, o, 0, 16), this.submitQueue(), await o.mapAsync(GPUMapMode.READ);\n let n = new BigUint64Array(o.getMappedRange()), s = Number(n[1] - n[0]);\n return o.unmap(), this.bufferManager.releaseBuffer(o, 16, GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST), this.bufferManager.releaseBuffer(t10, 16, GPUBufferUsage.COPY_SRC | GPUBufferUsage.QUERY_RESOLVE), s / 1e6;\n }\n shouldExecuteOnCPU(e, t10 = ite) {\n return O().getBool(\"WEBGPU_CPU_FORWARD\") && e.every((o) => this.tensorMap.get(o.dataId).resourceInfo == null && y.sizeFromShape(o.shape) < t10);\n }\n numDataIds() {\n return this.tensorMap.numDataIds() - this.tensorDataPendingDisposal.length;\n }\n dispose() {\n this.disposed || (this.bufferManager.dispose(), this.textureManager.dispose(), this.disposed = true);\n }\n};\nGi.nextDataId = 0;\nzl() && Ti(\"webgpu\", async () => {\n O().set(\"CHECK_COMPUTATION_FOR_ERRORS\", false);\n let r = { powerPreference: O().get(\"WEBGPU_USE_LOW_POWER_GPU\") ? \"low-power\" : \"high-performance\" }, e = await navigator.gpu.requestAdapter(r), t10 = {};\n e.features.has(\"timestamp-query-inside-passes\") && (t10.requiredFeatures = [\"timestamp-query-inside-passes\"]);\n let o = e.limits;\n t10.requiredLimits = { maxComputeWorkgroupStorageSize: o.maxComputeWorkgroupStorageSize, maxComputeWorkgroupsPerDimension: o.maxComputeWorkgroupsPerDimension, maxStorageBufferBindingSize: o.maxStorageBufferBindingSize };\n let n = await e.requestDevice(t10), s = await e.requestAdapterInfo();\n return new Gi(n, s);\n}, 3);\nvar ge;\n(function(r) {\n r[r.ADD = 0] = \"ADD\", r[r.ATAN2 = 1] = \"ATAN2\", r[r.COMPLEX_MULTIPLY_IMAG = 2] = \"COMPLEX_MULTIPLY_IMAG\", r[r.COMPLEX_MULTIPLY_REAL = 3] = \"COMPLEX_MULTIPLY_REAL\", r[r.DIV = 4] = \"DIV\", r[r.EQUAL = 5] = \"EQUAL\", r[r.GREATER = 6] = \"GREATER\", r[r.GREATER_EQUAL = 7] = \"GREATER_EQUAL\", r[r.INT_DIV = 8] = \"INT_DIV\", r[r.LESS = 9] = \"LESS\", r[r.LESS_EQUAL = 10] = \"LESS_EQUAL\", r[r.LOGICAL_AND = 11] = \"LOGICAL_AND\", r[r.LOGICAL_OR = 12] = \"LOGICAL_OR\", r[r.MAX = 13] = \"MAX\", r[r.MIN = 14] = \"MIN\", r[r.MOD = 15] = \"MOD\", r[r.MUL = 16] = \"MUL\", r[r.NOT_EQUAL = 17] = \"NOT_EQUAL\", r[r.POW = 18] = \"POW\", r[r.PRELU = 19] = \"PRELU\", r[r.SQUARED_DIFFERENCE = 20] = \"SQUARED_DIFFERENCE\", r[r.SUB = 21] = \"SUB\";\n})(ge || (ge = {}));\nvar V3 = `\n if (isnan(a)) { return a; }\n if (isnan(b)) { return b; }\n `;\nvar $g = `\n resultTemp = select(\n resultTemp, vec4(valueForNaN),\n vec4(isNaN) | isnanVec4(a) | isnanVec4(b));\n `;\nvar pte = \"return a + b;\";\nvar cte = \"return areal * breal - aimag * bimag;\";\nvar lte = \"return areal * bimag + aimag * breal;\";\nvar mte = \"return a / b;\";\nvar dte = \"return f32(a == b);\";\nvar fte = \"return vec4(a == b);\";\nvar hte = \"return f32(a > b);\";\nvar gte = \"return vec4(a > b);\";\nvar xte = \"return f32(a >= b);\";\nvar yte = \"return vec4(a >= b);\";\nvar bte = `\n let s = sign(a) * sign(b);\n let ia = i32(round(a));\n let ib = i32(round(b));\n return f32(idiv(ia, ib, s));\n`;\nvar Cte = `\n let ia = vec4(round(a));\n let ib = vec4(round(b));\n let cond = ib != vec4(0);\n var resultTemp = vec4(0);\n let s = sign(a) * sign(b);\n\n // Windows (D3D) wants guaranteed non-zero int division at compile-time.\n if (cond[0]) {\n resultTemp[0] = idiv(ia[0], ib[0], s[0]);\n }\n if (cond[1]) {\n resultTemp[1] = idiv(ia[1], ib[1], s[1]);\n }\n if (cond[2]) {\n resultTemp[2] = idiv(ia[2], ib[2], s[2]);\n }\n if (cond[3]) {\n resultTemp[3] = idiv(ia[3], ib[3], s[3]);\n }\n return vec4(resultTemp);\n`;\nvar Ste = \"return f32(a < b);\";\nvar wte = \"return vec4(a < b);\";\nvar Ite = \"return f32(a <= b);\";\nvar vte = \"return vec4(a <= b);\";\nvar kte = \"return f32(a >= 1.0 && b >= 1.0);\";\nvar Nte = `return (vec4(a >= vec4(1.0)) *\n vec4(b >= vec4(1.0)));`;\nvar Tte = \"return f32(a >= 1.0 || b >= 1.0);\";\nvar _te = `return min(vec4(a >= vec4(1.0)) +\n vec4(b >= vec4(1.0)), vec4(1.0));`;\nvar $te = `\n ${V3}\n if (b == 0.) {\n return uniforms.NAN;\n }\n var resultTemp = a % b;\n if ((a < 0. && b < 0.) || (a >= 0. && b > 0.)) {\n return resultTemp;\n } else {\n return (resultTemp + b) % b;\n }\n`;\nvar Ete = `\n let isNaN = !vec4(b);\n let valueForNaN = uniforms.NAN;\n var resultTemp = vec4(a % b);\n ${$g}\n\n if (!((a[0] < 0. && b[0] < 0.) || (a[0] >= 0. && b[0] > 0.))) {\n resultTemp[0] = (resultTemp[0] + b[0]) % b[0];\n }\n if (!((a[1] < 0. && b[1] < 0.) || (a[1] >= 0. && b[1] > 0.))) {\n resultTemp[1] = (resultTemp[1] + b[1]) % b[1];\n }\n if (!((a[2] < 0. && b[2] < 0.) || (a[2] >= 0. && b[2] > 0.))) {\n resultTemp[2] = (resultTemp[2] + b[2]) % b[2];\n }\n if (!((a[3] < 0. && b[3] < 0.) || (a[3] >= 0. && b[3] > 0.))) {\n resultTemp[3] = (resultTemp[3] + b[3]) % b[3];\n }\n\n return resultTemp;\n`;\nvar Ate = \"return a * b;\";\nvar Rte = `\n if (isnan(a) || isnan(b)) {\n return 1.0;\n }\n return f32(a != b);\n`;\nvar Dte = `\n var resultTemp = vec4(a != b);\n let valueForNaN = 1.0;\n ${$g}\n\n return resultTemp;\n`;\nvar Fte = `\n if(a < 0.0 && floor(b) < b) {\n return uniforms.NAN;\n }\n if (b == 0.0) {\n return 1.0;\n }\n if (round(abs(b) % 2.0) != 1.0) {\n return pow(abs(a), b);\n }\n return sign(a) * pow(abs(a), b);\n`;\nvar Ote = `\n let isModRound1Bool = vec4(round(abs(b) % vec4(2.0))) == vec4(1);\n let isModRound1 = vec4(isModRound1Bool);\n let multiplier = sign(a) * isModRound1 + (vec4(1.0) - isModRound1);\n var resultTemp = multiplier * pow(abs(a), b);\n\n // Ensure that a^0 = 1, including 0^0 = 1 as this correspond to TF and JS\n let isExpZero = b == vec4(0.0);\n if (isExpZero.r) {\n resultTemp.r = 1.0;\n }\n if (isExpZero.g) {\n resultTemp.g = 1.0;\n }\n if (isExpZero.b) {\n resultTemp.b = 1.0;\n }\n if (isExpZero.a) {\n resultTemp.a = 1.0;\n }\n let isNaN = (a < vec4(0.0)) & (floor(b) < b);\n let valueForNaN = uniforms.NAN;\n ${$g}\n return resultTemp;\n`;\nvar Pte = \"if (a < 0.0) { return b * a; } return a;\";\nvar Mte = `\n let aLessThanZero = vec4(a < vec4(0.0));\n return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a);\n`;\nvar Lte = \"return (a - b) * (a - b);\";\nvar Bte = \"return a - b;\";\nfunction gI(r, e, t10 = \"uniforms.NAN\") {\n let o = e ? $g : V3;\n return e ? `\n let valueForNaN = ${t10};\n var resultTemp = vec4(${r}(a, b));\n ` + o + `\n return resultTemp;\n ` : o + `\n return ${r}(a, b);\n `;\n}\nfunction kc(r, e) {\n switch (r) {\n case ge.ADD:\n return pte;\n case ge.ATAN2:\n return gI(\"atan2\", e);\n case ge.COMPLEX_MULTIPLY_IMAG:\n return lte;\n case ge.COMPLEX_MULTIPLY_REAL:\n return cte;\n case ge.DIV:\n return mte;\n case ge.EQUAL:\n return e ? fte : dte;\n case ge.GREATER:\n return e ? gte : hte;\n case ge.GREATER_EQUAL:\n return e ? yte : xte;\n case ge.INT_DIV:\n return e ? Cte : bte;\n case ge.LESS:\n return e ? wte : Ste;\n case ge.LESS_EQUAL:\n return e ? vte : Ite;\n case ge.LOGICAL_AND:\n return e ? Nte : kte;\n case ge.LOGICAL_OR:\n return e ? _te : Tte;\n case ge.MAX:\n return gI(\"max\", e);\n case ge.MIN:\n return gI(\"min\", e);\n case ge.MOD:\n return e ? Ete : $te;\n case ge.MUL:\n return Ate;\n case ge.NOT_EQUAL:\n return e ? Dte : Rte;\n case ge.POW:\n return e ? Ote : Fte;\n case ge.PRELU:\n return e ? Mte : Pte;\n case ge.SQUARED_DIFFERENCE:\n return Lte;\n case ge.SUB:\n return Bte;\n default:\n throw new Error(`BinaryType ${r} is not implemented!`);\n }\n}\nvar X;\n(function(r) {\n r[r.ABS = 0] = \"ABS\", r[r.ACOS = 1] = \"ACOS\", r[r.ACOSH = 2] = \"ACOSH\", r[r.ASIN = 3] = \"ASIN\", r[r.ASINH = 4] = \"ASINH\", r[r.ATAN = 5] = \"ATAN\", r[r.ATANH = 6] = \"ATANH\", r[r.CEIL = 7] = \"CEIL\", r[r.COS = 8] = \"COS\", r[r.COSH = 9] = \"COSH\", r[r.ELU = 10] = \"ELU\", r[r.ERF = 11] = \"ERF\", r[r.EXP = 12] = \"EXP\", r[r.EXPM1 = 13] = \"EXPM1\", r[r.FLOOR = 14] = \"FLOOR\", r[r.IS_FINITE = 15] = \"IS_FINITE\", r[r.IS_INF = 16] = \"IS_INF\", r[r.IS_NAN = 17] = \"IS_NAN\", r[r.LINEAR = 18] = \"LINEAR\", r[r.LOG = 19] = \"LOG\", r[r.LOG1P = 20] = \"LOG1P\", r[r.LOGICAL_NOT = 21] = \"LOGICAL_NOT\", r[r.NEG = 22] = \"NEG\", r[r.RELU = 23] = \"RELU\", r[r.RELU6 = 24] = \"RELU6\", r[r.LEAKYRELU = 25] = \"LEAKYRELU\", r[r.RECIPROCAL = 26] = \"RECIPROCAL\", r[r.ROUND = 27] = \"ROUND\", r[r.RSQRT = 28] = \"RSQRT\", r[r.SELU = 29] = \"SELU\", r[r.SIGMOID = 30] = \"SIGMOID\", r[r.SIGN = 31] = \"SIGN\", r[r.SIN = 32] = \"SIN\", r[r.SINH = 33] = \"SINH\", r[r.SOFTPLUS = 34] = \"SOFTPLUS\", r[r.SQRT = 35] = \"SQRT\", r[r.SQUARE = 36] = \"SQUARE\", r[r.STEP = 37] = \"STEP\", r[r.TAN = 38] = \"TAN\", r[r.TANH = 39] = \"TANH\", r[r.TO_INT = 40] = \"TO_INT\";\n})(X || (X = {}));\nvar Vte = \"return abs(a);\";\nvar zte = `\n if (abs(a) > 1.) {\n return uniforms.NAN;\n }\n return acos(a);\n`;\nvar Wte = `\n if (a < 1.) {\n return uniforms.NAN;\n }\n return acosh(a);\n`;\nvar Ute = `\n if (abs(a) > 1.) {\n return uniforms.NAN;\n }\n return asin(a);\n`;\nvar Gte = \"return asinh(a);\";\nvar Hte = `\n if (isnan(a)) {\n return uniforms.NAN;\n }\n return atan(a);\n`;\nvar Kte = `\n if (abs(a) > 1.) {\n return uniforms.NAN;\n }\n if (a == 1.) {\n return uniforms.INFINITY;\n }\n if (a == -1.) {\n return -uniforms.INFINITY;\n }\n return atanh(a);\n`;\nvar qte = \"return ceil(a);\";\nvar jte = \"return cos(a);\";\nvar Xte = `\n let e2x = exp(-a);\n return (e2x + 1.0 / e2x) / 2.0;\n`;\nvar Yte = \"return exp(a) - 1.0;\";\nvar Qte = \"if (a >= 0.0) { return a; } return (exp(a) - 1.0);\";\nvar Zte = `\n var resFloat = exp(a) - vec4(1.0);\n if (a.r >= 0.0) {\n resFloat.r = a.r;\n }\n if (a.g >= 0.0) {\n resFloat.g = a.g;\n }\n if (a.b >= 0.0) {\n resFloat.b = a.b;\n }\n if (a.a >= 0.0) {\n resFloat.a = a.a;\n }\n return resFloat;\n`;\nvar Jte = `\n // Error function is calculated approximately with elementary function.\n // See \"Handbook of Mathematical Functions with Formulas,\n // Graphs, and Mathematical Tables\", Abramowitz and Stegun.\n let p = ${S.ERF_P};\n let a1 = ${S.ERF_A1};\n let a2 = ${S.ERF_A2};\n let a3 = ${S.ERF_A3};\n let a4 = ${S.ERF_A4};\n let a5 = ${S.ERF_A5};\n\n let sign = sign(a);\n let absA = abs(a);\n let t = 1.0 / (1.0 + p * absA);\n return sign * (1.0 - (((((a5 * t + a4) * t) + a3) * t + a2) * t + a1) * t * exp(-absA * absA));\n`;\nvar ere = \"return exp(a);\";\nvar tre = \"return floor(a);\";\nvar rre = \"return f32(!isnan(a) && !isinf(a));\";\nvar ore = \"return f32(isinf(a));\";\nvar nre = \"return f32(isnan(a));\";\nvar sre = \"return a;\";\nvar are = `if (a < 0.0) { return uniforms.NAN; }\n return log(a);`;\nvar ire = `\n if (isnan(a)) { return a; }\n return log(1.0 + a);\n`;\nvar ure = \"return f32(!(a >= 1.0));\";\nvar pre = \"return -a;\";\nvar cre = \"if (a < 0.0) { return uniforms.alpha * a; } return a;\";\nvar lre = `\n let aLessThanZero = vec4(a < vec4(0.0));\n return (aLessThanZero * (uniforms.alpha * a)) + ((vec4(1.0) - aLessThanZero) * a);\n`;\nvar mre = \"return 1.0 / a;\";\nvar dre = \"return select(a, 0.0, a < 0.0);\";\nvar fre = \"return clamp(a, 0.0, 6.0);\";\nvar hre = \"return clamp(a, vec4(0.0, 0.0, 0.0, 0.0), vec4(6.0, 6.0, 6.0, 6.0));\";\nvar gre = `\n return select(a, vec4(0.0), a < vec4(0.0));\n`;\nvar xre = \"return round(a);\";\nvar yre = \"return inverseSqrt(a);\";\nvar bre = `\n if (a >= 0.0) {\n return ${S.SELU_SCALE} * a;\n } else {\n return ${S.SELU_SCALEALPHA} * (exp(a) - 1.0);\n }\n`;\nvar Cre = \"return 1.0 / (1.0 + exp(-1.0 * a));\";\nvar Sre = \"return sign(a);\";\nvar wre = \"return sin(a);\";\nvar Ire = `\n let e2x = exp(a);\n return (e2x - 1.0 / e2x) / 2.0;\n`;\nvar vre = `\n let epsilon = 1.1920928955078125e-7;\n let threshold = log(epsilon) + 2.0;\n\n let too_large = a > -threshold;\n let too_small = a < threshold;\n let exp_a = exp(a);\n\n if (too_large) {\n return a;\n } else if (too_small) {\n return exp_a;\n } else {\n return log(exp_a + 1.0);\n }\n`;\nvar kre = \"return sqrt(a);\";\nvar Nre = \"return a * a;\";\nvar Tre = `\n if (isnan(a)) {\n return a;\n }\n\n return select(uniforms.stepAlpha, 1.0, a > 0.0);\n`;\nvar _re = \"return tan(a);\";\nvar $re = `\n let e2x = exp(-2.0 * abs(a));\n return sign(a) * (1.0 - e2x) / (1.0 + e2x);\n`;\nvar Ere = \"return f32(i32((a)));\";\nfunction ja(r, e) {\n switch (r) {\n case X.ABS:\n return Vte;\n case X.ACOS:\n return zte;\n case X.ACOSH:\n return Wte;\n case X.ASIN:\n return Ute;\n case X.ASINH:\n return Gte;\n case X.ATAN:\n return Hte;\n case X.ATANH:\n return Kte;\n case X.COS:\n return jte;\n case X.COSH:\n return Xte;\n case X.CEIL:\n return qte;\n case X.ELU:\n return e ? Zte : Qte;\n case X.ERF:\n return Jte;\n case X.EXP:\n return ere;\n case X.EXPM1:\n return Yte;\n case X.FLOOR:\n return tre;\n case X.IS_FINITE:\n return rre;\n case X.IS_INF:\n return ore;\n case X.IS_NAN:\n return nre;\n case X.LINEAR:\n return sre;\n case X.LOG:\n return are;\n case X.LOG1P:\n return ire;\n case X.LOGICAL_NOT:\n return ure;\n case X.NEG:\n return pre;\n case X.LEAKYRELU:\n return e ? lre : cre;\n case X.RECIPROCAL:\n return mre;\n case X.RELU:\n return e ? gre : dre;\n case X.RELU6:\n return e ? hre : fre;\n case X.ROUND:\n return xre;\n case X.RSQRT:\n return yre;\n case X.SELU:\n return bre;\n case X.SIGMOID:\n return Cre;\n case X.SIGN:\n return Sre;\n case X.SIN:\n return wre;\n case X.SINH:\n return Ire;\n case X.SOFTPLUS:\n return vre;\n case X.SQRT:\n return kre;\n case X.SQUARE:\n return Nre;\n case X.STEP:\n return Tre;\n case X.TAN:\n return _re;\n case X.TANH:\n return $re;\n case X.TO_INT:\n return Ere;\n default:\n throw new Error(`BinaryType ${r} is not implemented!`);\n }\n}\nvar kt = (r) => {\n switch (r) {\n case 1:\n return \"f32\";\n case 2:\n return \"vec2\";\n case 3:\n return \"vec3\";\n case 4:\n return \"vec4\";\n default:\n throw new Error(`${r}-component is not supported.`);\n }\n};\nfunction pr(r, e = false, t10 = false, o = 3) {\n if (r === null)\n return \"\";\n let n = \"\";\n if (r === \"linear\")\n n = ja(X.LINEAR);\n else if (r === \"relu\")\n n = ja(X.RELU, t10);\n else if (r === \"elu\")\n n = ja(X.ELU, t10);\n else if (r === \"relu6\")\n n = ja(X.RELU6, t10);\n else if (r === \"prelu\")\n n = kc(ge.PRELU, t10);\n else if (r === \"sigmoid\")\n n = ja(X.SIGMOID, t10);\n else if (r === \"leakyrelu\")\n n = ja(X.LEAKYRELU, t10);\n else\n throw new Error(`Activation ${r} has not been implemented for the WebGPU backend.`);\n let a = kt(t10 ? 4 : 1), i = \"\";\n return e ? i = `\n fn activation(a : ${a}, coords : vec${o}) -> ${a} {\n let b = getPreluActivationWeightsByOutputCoords(coords);\n ${n}\n }` : i = `\n fn activation(a : ${a}, coords : vec${o}) -> ${a} {\n ${n}\n }`, i;\n}\nfunction Gr(r, e) {\n return `\n ${r ? \"value = value + getBiasByOutputCoords(coords);\" : \"\"}\n ${e ? \"value = activation(value, coords);\" : \"\"}\n `;\n}\nfunction xI(r, e, t10 = false, o = false, n = false, s = 1) {\n y.assert(r && s === 1 || !r, () => `transposeA ${r} is not compatible with component size ${s}`);\n let a = `\n ${r ? \"value = getA(batch, col, row);\" : \"value = getA(batch, row, col);\"}\n\n `, i = e ? \"value = getB(batch, col, row);\" : \"value = getB(batch, row, col);\";\n return `\n fn mm_readA(batch: i32, row: i32, colIn: i32) -> ${kt(s)} {\n var value = ${kt(s)}(0.0);\n let col = colIn * ${s};\n ${t10 && n ? a : `\n ${r ? \"if(row < uniforms.dimAOuter && col < uniforms.dimInner)\" : \"if(row < uniforms.aShape[1] && col < uniforms.aShape[2])\"}\n {\n ${a}\n }\n `}\n return value;\n }\n\n fn mm_readB(batch: i32, row: i32, colIn: i32) -> ${kt(s)} {\n let col = colIn * ${s};\n var value = ${kt(s)}(0.0);\n ${i}\n return value;\n }\n `;\n}\nfunction Wl(r, e, t10, o, n = false, s = false, a = false, i = 1) {\n return `\n ${xI(t10, o, n, s, a, i)}\n fn mm_write(batch: i32, row: i32, colIn: i32, valueIn: ${kt(i)}) {\n let col = colIn * ${i};\n ${n && s ? \"\" : \"if (row < uniforms.dimAOuter && col < uniforms.dimBOuter)\"}\n {\n var value = valueIn;\n let coords = vec3(batch, row, col);\n ${Gr(r, e)}\n setOutputAtCoords(coords[0], coords[1], coords[2], value);\n }\n }\n `;\n}\nvar Are = (r, e) => r ? `\n mm_Asub[inputRow][inputCol] = mm_readA(batchA,\n kStart + inputRow,\n globalRowStart / ${e} + inputCol);\n ` : `\n mm_Asub[inputRow][inputCol] = mm_readA(batchA,\n globalRow + innerRow,\n kStart / ${e} + inputCol);\n `;\nvar Rre = (r, e, t10) => r ? `\n let ACached0 = mm_Asub[k * ${e}][localRow];\n let ACached1 = mm_Asub[k * ${e} + 1][localRow];\n let ACached2 = mm_Asub[k * ${e} + 2][localRow];\n ${e === 3 ? \"\" : `let ACached3 = mm_Asub[k * ${e} + 3][localRow];`}\n for (var i = 0; i < ${t10}; i++) {\n acc[i] = BCached0 * ACached0[i] + acc[i];\n acc[i] = BCached1 * ACached1[i] + acc[i];\n acc[i] = BCached2 * ACached2[i] + acc[i];\n ${e === 3 ? \"\" : \"acc[i] = BCached3 * ACached3[i] + acc[i];\"}\n }` : `\n for (var i = 0; i < ${t10}; i++) {\n let ACached = mm_Asub[tileRow + i][k];\n acc[i] = BCached0 * ACached.x + acc[i];\n acc[i] = BCached1 * ACached.y + acc[i];\n acc[i] = BCached2 * ACached.z + acc[i];\n ${e === 3 ? \"\" : \"acc[i] = BCached3 * ACached.w + acc[i];\"}\n }`;\nfunction qu(r, e, t10 = false, o = 32, n = false, s = 32, a = false, i = false) {\n let p = e[1] * r[1], u = e[0] * r[0], c = t10 ? p : o, l = t10 ? o : p, m = c / e[0], d = o / e[1], f = r[1];\n return y.assert((t10 && m === 4 && r[1] === 4 || !t10 && (m === 3 || m === 4)) && c % e[0] === 0 && o % e[1] === 0 && r[0] === 4, () => `If transposeA ${t10} is true, innerElementSize ${m} and workPerThread[1] ${r[1]} must be 4.\n Otherwise, innerElementSize ${m} must be 3 or 4.\n tileAWidth ${c} must be divisible by workgroupSize[0]${e[0]}. tileInner ${o} must be divisible by workgroupSize[1] ${e[1]}. colPerThread ${r[0]} must be 4.`), `\n var mm_Asub : array, ${c / m}>, ${l}>;\n var mm_Bsub : array, ${u / r[0]}>, ${o}>;\n\n ${Q()} {\n let localRow = i32(localId.y);\n let tileRow = ${a ? \"0\" : `localRow * ${f}`};\n let tileCol = i32(localId.x);\n\n let globalRow = ${a ? \"0\" : `i32(globalId.y) * ${f}`};\n let globalCol = i32(globalId.x);\n let batch = ${n ? \"0\" : \"i32(globalId.z)\"};\n let batchA = ${n || !i ? \"batch\" : \"batch % uniforms.aShape[0]\"};\n let batchB = ${n || !i ? \"batch\" : \"batch % uniforms.bShape[0]\"};\n let globalRowStart = i32(workgroupId.y) * ${p};\n\n let numTiles = ${n ? `${Math.ceil(s / o)}` : `(uniforms.dimInner - 1) / ${o} + 1`};\n var kStart = ${n ? `i32(globalId.z) * ${s}` : \"0\"};\n\n var acc: array, ${f}>;\n\n // Loop over shared dimension.\n let tileRowB = localRow * ${d};\n for (var t = 0; t < numTiles; t++) {\n // Load one tile of A into local memory.\n for (var innerRow = 0; innerRow < ${f}; innerRow++) {\n let inputRow = tileRow + innerRow;\n let inputCol = tileCol;\n ${Are(t10, m)}\n }\n\n // Load one tile of B into local memory.\n for (var innerRow = 0; innerRow < ${d}; innerRow++) {\n let inputRow = tileRowB + innerRow;\n let inputCol = tileCol;\n mm_Bsub[inputRow][inputCol] = mm_readB(batchB, kStart + inputRow, globalCol);\n }\n kStart = kStart + ${o};\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n for (var k = 0; k < ${o / m}; k++) {\n let BCached0 = mm_Bsub[k * ${m}][tileCol];\n let BCached1 = mm_Bsub[k * ${m} + 1][tileCol];\n let BCached2 = mm_Bsub[k * ${m} + 2][tileCol];\n ${m === 3 ? \"\" : `let BCached3 = mm_Bsub[k * ${m} + 3][tileCol];`}\n\n ${Rre(t10, m, f)}\n }\n\n workgroupBarrier();\n }\n\n for (var innerRow = 0; innerRow < ${f}; innerRow++) {\n mm_write(batch, globalRow + innerRow, globalCol, acc[innerRow]);\n }\n }`;\n}\nvar z3 = (r) => r ? `\n mm_Asub[inputRow][inputCol] = mm_readA(batchA,\n kStart + inputRow,\n globalRowStart + inputCol);\n ` : `\n mm_Asub[inputRow][inputCol] = mm_readA(batchA,\n globalRowStart + inputRow,\n kStart + inputCol);\n `;\nvar Dre = (r) => r ? \"let ACached = mm_Asub[k][tileRow + innerRow];\" : \"let ACached = mm_Asub[tileRow + innerRow][k];\";\nfunction ju(r, e, t10 = false, o = 32, n = false, s = 32, a = false, i = false) {\n let p = r[1] * e[1], u = r[0] * e[0], c = t10 ? p : o, l = t10 ? o : p;\n y.assert(l % e[1] === 0 && c % e[0] === 0 && o % e[1] === 0, () => `tileAHight ${l} must be divisible by workgroupSize[1]${e[1]}, tileAWidth ${c} must be divisible by workgroupSize[0]${e[0]}, tileInner ${o} must be divisible by workgroupSize[1]${e[1]}`);\n let m = l / e[1], d = c / e[0], f = o / e[1], h = r[1], g = r[0], x = a ? `\n let localRow = i32(localId.y);\n let localCol = i32(localId.x);\n let globalRowStart = i32(workgroupId.y) * ${p};\n let globalColStart = i32(workgroupId.x) * ${u};\n\n // Loop over shared dimension.\n for (var t = 0; t < numTiles; t++) {\n // Load one tile of A into local memory.\n for (var inputRow = localRow; inputRow < ${l}; inputRow = inputRow + ${e[1]}) {\n for (var inputCol = localCol; inputCol < ${c}; inputCol = inputCol + ${e[0]}) {\n ${z3(t10)}\n }\n }\n // Load one tile of B into local memory.\n for (var inputRow = localRow; inputRow < ${o}; inputRow = inputRow + ${e[1]}) {\n for (var inputCol = localCol; inputCol < ${u}; inputCol = inputCol + ${e[0]}) {\n mm_Bsub[inputRow][inputCol] = mm_readB(batchB,\n kStart + inputRow,\n globalColStart + inputCol);\n }\n }\n kStart = kStart + ${o};\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n var BCached : array;\n for (var k = 0; k < ${o}; k++) {\n for (var inner = 0; inner < ${g}; inner++) {\n BCached[inner] = mm_Bsub[k][localCol + inner * ${e[0]}];\n }\n for (var innerRow = 0; innerRow < ${h}; innerRow++) {\n let ACached = ${t10 ? `mm_Asub[k][localRow + innerRow * ${e[1]}];` : `mm_Asub[localRow + innerRow * ${e[1]}][k];`}\n for (var innerCol = 0; innerCol < ${g}; innerCol++) {\n acc[innerRow][innerCol] = acc[innerRow][innerCol] +\n ACached * BCached[innerCol];\n }\n }\n }\n workgroupBarrier();\n }\n for (var innerRow = 0; innerRow < ${h}; innerRow++) {\n let gRow = globalRowStart + localRow + innerRow * ${e[1]};\n for (var innerCol = 0; innerCol < ${g}; innerCol++) {\n let gCol = globalColStart + localCol + innerCol * ${e[0]};\n mm_write(batch, gRow, gCol, acc[innerRow][innerCol]);\n }\n }\n ` : `\n let tileRow = i32(localId.y) * ${h};\n let tileCol = i32(localId.x) * ${g};\n\n let globalRow = i32(globalId.y) * ${h};\n let globalCol = i32(globalId.x) * ${g};\n let globalRowStart = i32(workgroupId.y) * ${p};\n\n let tileRowA = i32(localId.y) * ${m};\n let tileColA = i32(localId.x) * ${d};\n let tileRowB = i32(localId.y) * ${f};\n // Loop over shared dimension.\n for (var t = 0; t < numTiles; t++) {\n // Load one tile of A into local memory.\n for (var innerRow = 0; innerRow < ${m}; innerRow++) {\n for (var innerCol = 0; innerCol < ${d}; innerCol++) {\n let inputRow = tileRowA + innerRow;\n let inputCol = tileColA + innerCol;\n ${z3(t10)}\n }\n }\n\n // Load one tile of B into local memory.\n for (var innerRow = 0; innerRow < ${f}; innerRow++) {\n for (var innerCol = 0; innerCol < ${g}; innerCol++) {\n let inputRow = tileRowB + innerRow;\n let inputCol = tileCol + innerCol;\n mm_Bsub[inputRow][inputCol] = mm_readB(batchB,\n kStart + inputRow,\n globalCol + innerCol);\n }\n }\n kStart = kStart + ${o};\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n var BCached : array;\n for (var k = 0; k < ${o}; k++) {\n for (var inner = 0; inner < ${g}; inner++) {\n BCached[inner] = mm_Bsub[k][tileCol + inner];\n }\n\n for (var innerRow = 0; innerRow < ${h}; innerRow++) {\n ${Dre(t10)}\n for (var innerCol = 0; innerCol < ${g}; innerCol++) {\n acc[innerRow][innerCol] = acc[innerRow][innerCol] + ACached * BCached[innerCol];\n }\n }\n }\n\n workgroupBarrier();\n }\n\n for (var innerRow = 0; innerRow < ${h}; innerRow++) {\n for (var innerCol = 0; innerCol < ${g}; innerCol++) {\n mm_write(batch, globalRow + innerRow, globalCol + innerCol,\n acc[innerRow][innerCol]);\n }\n }\n `;\n return `\n var mm_Asub : array, ${l}>;\n var mm_Bsub : array, ${o}>;\n\n ${Q()} {\n let batch = ${n ? \"0\" : \"i32(globalId.z)\"};\n let batchA = ${n || !i ? \"batch\" : \"batch % uniforms.aShape[0]\"};\n let batchB = ${n || !i ? \"batch\" : \"batch % uniforms.bShape[0]\"};\n let numTiles = ${n ? `${Math.ceil(s / o)}` : `(uniforms.dimInner - 1) / ${o} + 1`};\n var kStart = ${n ? `i32(globalId.z) * ${s}` : \"0\"};\n\n var acc : array, ${h}>;\n\n // Without this initialization strange values show up in acc.\n for (var innerRow = 0; innerRow < ${h}; innerRow++) {\n for (var innerCol = 0; innerCol < ${g}; innerCol++) {\n acc[innerRow][innerCol] = 0.0;\n }\n }\n ${x}\n }\n `;\n}\nvar Fre = (r) => r ? `\n mm_readA(batchA, colA, globalRow),\n mm_readA(batchA, colA + 1, globalRow),\n mm_readA(batchA, colA + 2, globalRow),\n mm_readA(batchA, colA + 3, globalRow)\n ` : `\n mm_readA(batchA, globalRow, colA),\n mm_readA(batchA, globalRow, colA + 1),\n mm_readA(batchA, globalRow, colA + 2),\n mm_readA(batchA, globalRow, colA + 3)\n `;\nfunction Ore(r, e = false) {\n y.assert(r[1] === 1 && r[2] === 1, () => `A linear work group size is required. But got ${r}.`);\n let t10 = r[0] * 4;\n return `\n var mm_Asub : array, ${r[0]}>;\n\n ${Q()} {\n let tileCol = i32(localId.x);\n let globalCol = i32(globalId.x);\n let globalRow = i32(globalId.y);\n\n let numTiles = (uniforms.dimInner - 1) / ${t10} + 1;\n let batch = i32(globalId.z);\n let batchA = batch % uniforms.aShape[0];\n let batchB = batch % uniforms.bShape[0];\n // Without this initialization strange values show up in acc.\n var acc = 0.0;\n\n // Loop over shared dimension.\n for (var t = 0; t < numTiles; t++) {\n // Load one tile of A into local memory.\n let colA = t * ${t10} + tileCol * 4;\n mm_Asub[tileCol] = vec4(${Fre(e)});\n workgroupBarrier();\n\n // Compute acc values for a single thread.\n for (var k = 0; k < ${t10 / 4}; k++) {\n let rowB = t * ${t10} + k * 4;\n let BCached = vec4(mm_readB(batchB, rowB, globalCol),\n mm_readB(batchB, rowB + 1, globalCol),\n mm_readB(batchB, rowB + 2, globalCol),\n mm_readB(batchB, rowB + 3, globalCol));\n\n let ACached = mm_Asub[k];\n acc = acc + dot(ACached, BCached);\n }\n\n workgroupBarrier();\n }\n\n mm_write(batch, globalRow, globalCol, acc);\n }\n `;\n}\nvar Eg = class {\n constructor(e, t10, o = false, n = false, s = null, a = null, i = null, p = false) {\n this.variableNames = [\"A\", \"B\"], this.uniforms = \"dimAOuter : i32, dimBOuter : i32, dimInner : i32,\", this.outputShape = t10, this.dispatchLayout = { x: [2], y: [1], z: [0] };\n let u = o ? e[1] : e[2];\n if (this.isVec4 = (u % 4 === 0 && !o || t10[1] % 4 === 0 && o) && t10[2] % 4 === 0 && !n, this.isVectorA = t10[1] === 1 && !o, !this.isVec4 && this.isVectorA)\n this.elementsPerThread = [1, 1, 1], this.workgroupSize = [32, 1, 1];\n else {\n let m = dI(t10[1], u, t10[2], o);\n this.workgroupSize = m.workgroupSize, this.elementsPerThread = m.elementsPerThread;\n }\n this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize, this.elementsPerThread);\n let c = s != null, l = i != null;\n c && this.variableNames.push(\"bias\"), l && this.variableNames.push(\"preluActivationWeights\"), this.sequentialAccessByThreads = p, this.transposeA = o, this.transposeB = n, this.addBias = c, this.activation = a, this.hasPreluActivationWeights = l, [this.fitAOuter, this.fitBOuter, this.fitInner] = this.getShapeFit(t10[1], t10[2], u), this.shaderKey = `matMulPacked_${this.elementsPerThread}_${o}_${n}_${this.activation}_${this.fitAOuter}_${this.fitBOuter}_${this.fitInner}_${this.isVec4}_${this.isVectorA}_${this.sequentialAccessByThreads}`;\n }\n getShapeFit(e, t10, o) {\n let n = this.workgroupSize[1] * this.elementsPerThread[1], s = this.workgroupSize[0] * this.elementsPerThread[0];\n !this.isVec4 && this.isVectorA ? this.tileInner = this.workgroupSize[0] * 4 : this.tileInner = s;\n let a = e % n === 0, i = t10 % s === 0, p = o % this.tileInner === 0;\n return [a, i, p];\n }\n getUserCode() {\n return `\n ${pr(this.activation, this.hasPreluActivationWeights, this.isVec4)}\n ${Wl(this.addBias, this.activation, false, this.transposeB, this.fitAOuter, this.fitBOuter, this.fitInner, this.isVec4 ? 4 : 1)}\n ${this.isVec4 ? qu(this.elementsPerThread, this.workgroupSize, this.transposeA, this.tileInner, false, null, this.isVectorA, true) : this.isVectorA ? Ore(this.workgroupSize, this.transposeA) : ju(this.elementsPerThread, this.workgroupSize, this.transposeA, this.tileInner, false, null, this.sequentialAccessByThreads, true)}\n `;\n }\n};\nfunction Pre(r) {\n return `\n var sumValues : array;\n ${Q()} {\n let coords = getOutputCoords();\n let batch = coords[0];\n let batchA = batch % uniforms.aShape[0];\n let batchB = batch % uniforms.bShape[0];\n let row = coords[1];\n let col = coords[2];\n var sum = 0.0;\n let Length = uniforms.dimInner;\n for (var k = i32(localId.x); k < Length; k = k + ${r}) {\n let dataA = mm_readA(batchA, row, k);\n let dataB = mm_readB(batchB, k, col);\n sum = sum + dataA * dataB;\n }\n sumValues[localId.x] = sum;\n workgroupBarrier();\n\n for(var currentSize = ${r / 2}u; currentSize > 1u;\n currentSize = currentSize / 2u) {\n if (localId.x < currentSize)\n {\n sumValues[localId.x] = sumValues[localId.x] + sumValues[localId.x + currentSize];\n }\n workgroupBarrier();\n }\n\n if (localId.x == 0u) {\n sum = sumValues[0] + sumValues[1];\n mm_write(batch, row, col, sum);\n }\n }\n `;\n}\nvar Ag = class {\n constructor(e, t10 = false, o = false, n = null, s = null, a = null) {\n this.variableNames = [\"A\", \"B\"], this.uniforms = \"dimAOuter : i32, dimBOuter : i32, dimInner : i32,\", this.workgroupSize = [256, 1, 1], this.outputShape = e, this.dispatchLayout = { x: [], y: [1, 2], z: [0] }, this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize);\n let i = n != null, p = a != null;\n i && this.variableNames.push(\"bias\"), p && this.variableNames.push(\"preluActivationWeights\"), this.transposeA = t10, this.transposeB = o, this.addBias = i, this.activation = s, this.hasPreluActivationWeights = p, this.shaderKey = `matMulReduce_${this.activation}_${t10}_${o}`;\n }\n getUserCode() {\n return `\n ${pr(this.activation, this.hasPreluActivationWeights)}\n ${Wl(this.addBias, this.activation, this.transposeA, this.transposeB)}\n ${Pre(this.workgroupSize[0])}\n `;\n }\n};\nfunction Mre(r) {\n let e = r[1], t10 = r[0], o = e > t10 ? e : t10;\n return `\n var mm_Asub : array, ${e}>;\n var mm_Bsub : array, ${o}>;\n\n // If the output size is small for matrix multiplication, avoid to use vec4\n // and handle some elements per thread to optimally utilize the ALU.\n // Read data from global memory to registers firstly, then store them into\n // shared memory, so it is instruction-Level parallelism for arithmetic\n // operations and others handle IO operations between barrier api, makes ALU\n // and load/store units work simultaneously, could improves the performance.\n ${Q()} {\n let tileRow = i32(localId.y);\n let tileCol = i32(localId.x);\n let globalRow = i32(globalId.y);\n let globalCol = i32(globalId.x);\n let batch = i32(globalId.z);\n let batchA = batch % uniforms.aShape[0];\n let batchB = batch % uniforms.bShape[0];\n\n // uniforms.dimInner should be greater than 0.\n let numTiles = (uniforms.dimInner - 1) / ${o} + 1;\n var acc = 0.0;\n\n var globalColA = tileCol;\n var globalRowB = 0;\n var regA = mm_readA(batchA, globalRow, globalColA);\n var regB0 = mm_readB(batchB, globalRowB + 2 * tileRow, globalCol);\n var regB1 = mm_readB(batchB, globalRowB + 2 * tileRow + 1, globalCol);\n globalColA = globalColA + ${o};\n globalRowB = globalRowB + ${o};\n\n for (var t = 0; t < numTiles; t = t + 1) {\n mm_Asub[tileRow][tileCol] = regA;\n mm_Bsub[2 * tileRow][tileCol] = regB0;\n mm_Bsub[2 * tileRow + 1][tileCol] = regB1;\n\n workgroupBarrier();\n\n regA = mm_readA(batchA, globalRow, globalColA);\n regB0 = mm_readB(batchB, globalRowB + 2 * tileRow, globalCol);\n regB1 = mm_readB(batchB, globalRowB + 2 * tileRow + 1, globalCol);\n globalColA = globalColA + ${o};\n globalRowB = globalRowB + ${o};\n\n for (var k = 0; k < ${o}; k = k + 1) {\n acc = acc + mm_Asub[tileRow][k] * mm_Bsub[k][tileCol];\n }\n workgroupBarrier();\n }\n\n mm_write(batch, globalRow, globalCol, acc);\n }\n `;\n}\nvar Rg = class {\n constructor(e, t10, o, n = false, s = false, a = null, i = null, p = null) {\n this.variableNames = [\"A\", \"B\"], this.uniforms = \"dimAOuter : i32, dimBOuter : i32, dimInner : i32,\", this.workgroupSize = [16, 8, 1], this.outputShape = o, this.dispatchLayout = { x: [2], y: [1], z: [0] }, this.dispatch = [Math.ceil(o[2] / this.workgroupSize[0]), Math.ceil(o[1] / this.workgroupSize[1]), o[0]];\n let u = a != null;\n u && this.variableNames.push(\"bias\");\n let c = p != null;\n c && this.variableNames.push(\"preluActivationWeights\"), this.transposeA = n, this.transposeB = s, this.addBias = u, this.activation = i, this.hasPreluActivationWeights = c, this.shaderKey = `matMulSmallOutputSize_${this.activation}_${n}_${s}`;\n }\n getUserCode() {\n return `\n ${pr(this.activation, this.hasPreluActivationWeights)}\n ${Wl(this.addBias, this.activation, this.transposeA, this.transposeB)}\n ${Mre(this.workgroupSize)}\n `;\n }\n};\nvar Dg = class {\n constructor(e, t10, o = false, n = false) {\n this.variableNames = [\"A\", \"B\"], this.uniforms = \"dimAOuter : i32, dimBOuter : i32, dimInner : i32,\", this.workgroupSize = [8, 8, 1], this.atomic = true, this.isVec4 = false, this.splitedDimInner = 128, y.assert(e[0] === 1, () => \"MatMulSplitKProgram only supports batch = 1.\"), this.outputShape = e, this.dispatchLayout = { x: [2], y: [1], z: [0, 3] }, this.isVec4 = (o && this.outputShape[1] % 4 === 0 || !o && t10 % 4 === 0) && this.outputShape[2] % 4 === 0, this.elementsPerThread = [4, 4, this.splitedDimInner], this.isVec4 || (this.outputShape[1] < 16 && (this.elementsPerThread[1] = 1), this.outputShape[2] < 16 && (this.elementsPerThread[0] = 1)), this.dispatch = Y(this.dispatchLayout, [this.outputShape[0], this.outputShape[1], this.outputShape[2], t10], this.workgroupSize, this.elementsPerThread), this.transposeA = o, this.transposeB = n, this.shaderKey = `matMulSplitK_${o}_${n}_${this.elementsPerThread}_${this.isVec4}`;\n }\n getUserCode() {\n let e = this.isVec4 ? 4 : 1;\n return `\n ${xI(false, this.transposeB, false, false, false, e)}\n fn mm_write(batch: i32, row : i32, colIn : i32, value : ${kt(e)}) {\n let col = colIn * ${e};\n if (row < uniforms.dimAOuter && col < uniforms.dimBOuter) {\n let coords = vec3(batch, row, col);\n let flatIndex = getOutputIndexFromCoords(coords);\n // The problem is that we should initialize output to zero before using.\n // Otherwise, the original value will be added to the result.\n for (var i = 0; i < ${e}; i = i + 1) {\n ${Ic(\"&result[flatIndex + i]\", `${e > 1 ? \"value[i]\" : \"value\"}`, \"float32\")}\n }\n }\n }\n ${this.isVec4 ? qu(this.elementsPerThread, this.workgroupSize, this.transposeA, 32, true, this.splitedDimInner) : ju(this.elementsPerThread, this.workgroupSize, this.transposeA, 32, true, this.splitedDimInner)}\n `;\n }\n};\nvar Fg = class {\n constructor(e, t10 = null, o = null, n = null) {\n this.uniforms = \"\", this.variableNames = [\"x\"], this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = e, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.addBias = t10 != null, this.hasPreluActivationWeights = n != null, this.activation = o, this.addBias && this.variableNames.push(\"bias\"), this.hasPreluActivationWeights && this.variableNames.push(\"preluActivationWeights\"), this.shaderKey = `biasActivation_${o}`;\n }\n getUserCode() {\n return `\n ${pr(this.activation, this.hasPreluActivationWeights)}\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let coords = getCoordsFromIndex(index);\n var value = getXByOutputIndex(index);\n ${Gr(this.addBias, this.activation)}\n setOutputAtIndex(index, value);\n }\n }\n `;\n }\n};\nvar Og = class {\n constructor(e) {\n this.variableNames = [], this.outputShape = [], this.uniforms = \"value : f32,\", this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = e, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.shaderKey = \"fill\";\n }\n getUserCode() {\n return `\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n setOutputAtIndex(index, uniforms.value);\n }\n }\n `;\n }\n};\nfunction fr(r) {\n let { backend: e, attrs: t10 } = r, { shape: o, value: n } = t10, { dtype: s } = t10;\n if (s = s || y.inferDtype(n), s === \"string\") {\n let a = y.getArrayFromDType(s, y.sizeFromShape(o));\n return a.fill(n), e.makeTensorInfo(o, s, a);\n } else {\n let a = new Og(o), i = [{ type: \"float32\", data: [n] }];\n return e.runWebGPUProgram(a, [], s, i);\n }\n}\nvar W3 = { kernelName: ws, backendName: \"webgpu\", kernelFunc: fr };\nfunction me(r) {\n let { inputs: e, attrs: t10 } = r, { x: o } = e, { shape: n } = t10, s = y.sizeFromShape(o.shape), a = y.inferFromImplicitShape(n, s), i = y.sizeFromShape(a);\n return y.assert(s === i, () => `The new shape (${a}) has ${i} elements and the old shape (${o.shape}) has ${s} elements. The new shape and old shape must have the same number of elements.`), r.backend.incRef(o.dataId), { dataId: o.dataId, shape: a, dtype: o.dtype };\n}\nvar U3 = { kernelName: _s, backendName: \"webgpu\", kernelFunc: me };\nfunction Xu({ a: r, b: e, transposeA: t10, transposeB: o, backend: n, bias: s = null, preluActivationWeights: a = null, leakyreluAlpha: i = 0, activation: p = null }) {\n let u = r.shape.length, c = e.shape.length, l = t10 ? r.shape[u - 2] : r.shape[u - 1], m = o ? e.shape[c - 1] : e.shape[c - 2], d = t10 ? r.shape[u - 1] : r.shape[u - 2], f = o ? e.shape[c - 2] : e.shape[c - 1], h = r.shape.slice(0, -2), g = e.shape.slice(0, -2), x = y.sizeFromShape(h), b = y.sizeFromShape(g), w = yr.assertAndGetBroadcastShape(r.shape.slice(0, -2), e.shape.slice(0, -2)).concat([d, f]);\n y.assert(l === m, () => `Error in matMul: inner shapes (${l}) and (${m}) of Tensors with shapes ${r.shape} and ${e.shape} and transposeA=${t10} and transposeB=${o} must match.`);\n let k = t10 ? [x, l, d] : [x, d, l], _ = o ? [b, f, m] : [b, m, f], E = me({ inputs: { x: r }, backend: n, attrs: { shape: k } }), A = me({ inputs: { x: e }, backend: n, attrs: { shape: _ } }), R = [E, A], D = Math.max(x, b), P = [E, A], M = [{ type: \"int32\", data: [d] }, { type: \"int32\", data: [f] }, { type: \"int32\", data: [l] }], L, V, z = [D, d, f], U = O().get(\"WEBGPU_MATMUL_PROGRAM_TYPE\");\n if (U < 0) {\n let H = O().getNumber(\"WEBGPU_THRESHOLD_TO_INCREASE_WORKGROUPS_FOR_MATMUL\"), q = H > 0 ? H : n.thresholdToIncreaseWorkgroups, Z = D * Math.ceil(d / 32) * Math.ceil(f / 32);\n Z <= q || d <= 8 && Z <= q * 2 ? D * d * f <= 128 ? U = Ro.MatMulReduceProgram : D === 1 && m >= 2e3 ? U = Ro.MatMulSplitKProgram : U = Ro.MatMulSmallOutputSizeProgram : U = Ro.MatMulPackedProgram;\n }\n switch (U) {\n case Ro.MatMulReduceProgram:\n L = new Ag(z, t10, o, s, p, a);\n break;\n case Ro.MatMulSplitKProgram: {\n if (V = fr({ backend: n, attrs: { shape: z, value: 0, dtype: r.dtype } }), L = new Dg(z, m, t10, o), s || p) {\n V = n.runWebGPUProgram(L, P, r.dtype, M, V);\n let q = new Fg(V.shape, s, p, a), Z = null, ee = [V];\n s && ee.push(s), a && ee.push(a), p === \"leakyrelu\" && (Z = [{ type: \"float32\", data: [i] }], q.uniforms += \" alpha : f32,\");\n let oe = n.runWebGPUProgram(q, ee, V.dtype, Z);\n R.push(V);\n let J = me({ inputs: { x: oe }, backend: n, attrs: { shape: w } });\n R.push(oe);\n for (let te of R)\n n.disposeData(te.dataId);\n return J;\n }\n break;\n }\n case Ro.MatMulSmallOutputSizeProgram:\n L = new Rg(k, _, z, t10, o, s, p, a);\n break;\n case Ro.MatMulPackedProgram:\n let H = n.adapterInfo.isIntel();\n L = new Eg(k, z, t10, o, s, p, a, H);\n break;\n default:\n throw new Error(`Unsupported MatMulProgramType ${U}.`);\n }\n s && P.push(s), a && P.push(a), p === \"leakyrelu\" && (M.push({ type: \"float32\", data: [i] }), L.uniforms += \" alpha : f32,\"), V = n.runWebGPUProgram(L, P, r.dtype, M, V);\n let K = me({ inputs: { x: V }, backend: n, attrs: { shape: w } });\n R.push(V);\n for (let H of R)\n n.disposeData(H.dataId);\n return K;\n}\nfunction Lre(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { a: n, b: s, bias: a, preluActivationWeights: i } = e, { transposeA: p, transposeB: u, activation: c, leakyreluAlpha: l } = o;\n return Xu({ a: n, b: s, transposeA: p, transposeB: u, backend: t10, bias: a, preluActivationWeights: i, leakyreluAlpha: l, activation: c });\n}\nvar G3 = { kernelName: ho, backendName: \"webgpu\", kernelFunc: Lre };\nvar Ul = class {\n constructor(e, t10, o) {\n this.variableNames = [\"AReal\", \"AImag\", \"BReal\", \"BImag\"], this.workgroupSize = [128, 1, 1], this.size = true, this.outputShape = S.assertAndGetBroadcastShape(t10, o), this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.shaderKey = `binaryOpComplex_${e}`, this.op = e;\n }\n getUserCode() {\n return `\n fn binaryOpComplex(\n areal : f32, aimag : f32, breal : f32, bimag : f32) -> f32 {\n ${kc(this.op, false)}\n }\n\n ${Q(\"index\")} {\n if(index < uniforms.size) {\n let areal = getARealByOutputIndex(index);\n let aimag = getAImagByOutputIndex(index);\n let breal = getBRealByOutputIndex(index);\n let bimag = getBImagByOutputIndex(index);\n setOutputAtIndex(index, binaryOpComplex(areal, aimag, breal, bimag));\n }\n }\n `;\n }\n};\nvar Yu = class {\n constructor(e, t10, o) {\n this.size = true, this.variableNames = [\"A\", \"B\"], this.outputShape = S.assertAndGetBroadcastShape(t10, o), this.dispatchLayout = ae(this.outputShape), this.op = e, this.useSharedMemoryWithA = t10.length <= 1 && o.length > 1 && t10[0] < 128, this.useSharedMemoryWithB = o.length <= 1 && t10.length > 1 && o[0] < 128, this.useSharedMemoryWithA || this.useSharedMemoryWithB ? (this.isVec4 = false, this.lastDimensionSize = this.useSharedMemoryWithB ? o[0] : t10[0], this.shaderKey = `binary_${this.type}_${e}_${this.lastDimensionSize}_${this.useSharedMemoryWithB}`, this.type = \"shared\", this.workgroupSize = [256, 1, 1], this.workPerThread = 1) : (y.arraysEqual(t10, o) && y.sizeFromShape(t10) % 4 === 0 ? (this.isVec4 = true, this.type = \"vec4\", this.workPerThread = 4) : (this.isVec4 = false, this.type = \"plain\", this.workPerThread = 1), this.shaderKey = `binary_${this.type}_${e}`, this.workgroupSize = [128, 1, 1]), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize, [this.workPerThread, 1, 1]);\n }\n getUserCode() {\n let e, t10 = this.isVec4 ? \"vec4\" : \"f32\", o = `\n fn binaryOperation(a : ${t10}, b : ${t10}) -> ${t10} {\n let isNaN = false;\n {\n ${kc(this.op, this.isVec4)}\n }\n };\n `;\n if (this.type === \"shared\") {\n let n = this.lastDimensionSize > 1 ? `coords[${this.outputShape.length - 1}]` : \"0\", s = this.useSharedMemoryWithB ? `let a = getAByOutputIndex(index);\n let b = sharedBuf[${n}];` : `let a = sharedBuf[${n}];\n let b = getBByOutputIndex(index);`;\n e = `\n ${o}\n var sharedBuf : array;\n ${Q(\"index\")} {\n // Fill in the shared memory buffer.\n let localIndex = i32(localId.x);\n if(localIndex < ${this.lastDimensionSize}) {\n sharedBuf[localIndex] = f32(${this.useSharedMemoryWithB ? \"B\" : \"A\"}[localIndex]);\n }\n workgroupBarrier();\n\n if(index < uniforms.size) {\n let coords = getCoordsFromIndex(index);\n ${s}\n setOutputAtIndex(index, binaryOperation(a, b));\n }\n }\n `;\n } else\n e = `\n ${o}\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let a = getAByOutputIndex(index);\n let b = getBByOutputIndex(index);\n setOutputAtIndex(index, binaryOperation(a, b));\n }\n }\n `;\n return e;\n }\n};\nfunction Dt(r) {\n let { inputs: e } = r, { x: t10 } = e;\n return r.backend.incRef(t10.dataId), { dataId: t10.dataId, shape: t10.shape, dtype: t10.dtype };\n}\nvar H3 = { kernelName: mo, backendName: \"webgpu\", kernelFunc: Dt };\nfunction po(r) {\n let { inputs: e, backend: t10 } = r, { real: o, imag: n } = e, s = t10.makeTensorInfo(o.shape, \"complex64\"), a = t10.tensorMap.get(s.dataId), i = Dt({ inputs: { x: o }, backend: t10 }), p = Dt({ inputs: { x: n }, backend: t10 });\n return a.complexTensorInfos = { real: i, imag: p }, s;\n}\nvar K3 = { kernelName: ri, backendName: \"webgpu\", kernelFunc: po };\nvar Hr = class {\n constructor(e, t10, o = \"\") {\n this.variableNames = [\"A\"], this.size = true;\n let n = 128;\n this.workgroupSize = [n, 1, 1], this.outputShape = e, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.op = t10, o !== \"\" && (this.uniforms = o), this.shaderKey = `unary_${t10}`;\n }\n getUserCode() {\n return `\n fn unaryOperation(a : f32) -> f32 {\n ${ja(this.op, false)}\n }\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let a = getAByOutputIndex(index);\n setOutputAtIndex(index, unaryOperation(a));\n }\n }\n `;\n }\n};\nfunction xe({ opType: r, cpuKernelImpl: e, dtype: t10 }) {\n return ({ inputs: o, backend: n }) => {\n let { x: s } = o, a = n, i = t10 || s.dtype;\n if (a.shouldExecuteOnCPU([s]) && e != null) {\n let u = a.tensorMap.get(s.dataId), c = e(u.values, i);\n return a.makeTensorInfo(s.shape, i, c);\n }\n let p = new Hr(s.shape, r);\n return a.runWebGPUProgram(p, [s], i);\n };\n}\nfunction Ze({ opType: r, cpuKernelImpl: e, supportsComplex: t10 = false, dtype: o }) {\n return ({ inputs: n, backend: s }) => {\n let { a, b: i } = n, p = s;\n if (t10 && a.dtype === \"complex64\") {\n let l = p.tensorMap.get(a.dataId), m = p.tensorMap.get(i.dataId), d, f;\n if (r !== ge.MUL)\n [d, f] = [[l.complexTensorInfos.real, m.complexTensorInfos.real], [l.complexTensorInfos.imag, m.complexTensorInfos.imag]].map((g) => {\n let [x, b] = g, C = { dataId: x.dataId, dtype: x.dtype, shape: a.shape }, w = { dataId: b.dataId, dtype: b.dtype, shape: i.shape }, k = new Yu(r, a.shape, i.shape);\n return p.runWebGPUProgram(k, [C, w], dt(x.dtype, b.dtype));\n });\n else {\n let g = new Ul(ge.COMPLEX_MULTIPLY_REAL, a.shape, i.shape), x = new Ul(ge.COMPLEX_MULTIPLY_IMAG, a.shape, i.shape), b = [{ dataId: l.complexTensorInfos.real.dataId, dtype: l.complexTensorInfos.real.dtype, shape: a.shape }, { dataId: l.complexTensorInfos.imag.dataId, dtype: l.complexTensorInfos.imag.dtype, shape: a.shape }, { dataId: m.complexTensorInfos.real.dataId, dtype: m.complexTensorInfos.real.dtype, shape: i.shape }, { dataId: m.complexTensorInfos.imag.dataId, dtype: m.complexTensorInfos.imag.dtype, shape: i.shape }];\n d = p.runWebGPUProgram(g, b, \"float32\"), f = p.runWebGPUProgram(x, b, \"float32\");\n }\n let h = po({ inputs: { real: d, imag: f }, backend: p });\n return p.disposeData(d.dataId), p.disposeData(f.dataId), h;\n }\n let u = o || dt(a.dtype, i.dtype);\n if ((a.dtype === \"string\" || i.dtype === \"string\" || p.shouldExecuteOnCPU([a, i])) && e != null) {\n let l = p.tensorMap.get(a.dataId).values, m = p.tensorMap.get(i.dataId).values, d = a.dtype === \"string\" ? S.fromUint8ToStringArray(l) : l, f = a.dtype === \"string\" ? S.fromUint8ToStringArray(m) : m, [h, g] = e(a.shape, i.shape, d, f, u);\n return p.makeTensorInfo(g, u, h);\n }\n let c = new Yu(r, a.shape, i.shape);\n return p.runWebGPUProgram(c, [a, i], u);\n };\n}\nvar { addImpl: q3, castImpl: j3, ceilImpl: X3, concatImpl: Y3, equalImpl: Q3, expImpl: Z3, expm1Impl: J3, floorImpl: eM, gatherNdImpl: tM, gatherV2Impl: rM, greaterEqualImpl: oM, greaterImpl: nM, lessEqualImpl: sM, lessImpl: aM, logImpl: iM, maxImpl: uM, maximumImpl: pM, minimumImpl: cM, multiplyImpl: lM, negImpl: mM, notEqualImpl: dM, prodImpl: fM, rangeImpl: hM, rsqrtImpl: gM, scatterImpl: xM, simpleAbsImpl: yM, sliceImpl: bM, stridedSliceImpl: CM, stringNGramsImpl: SM, subImpl: wM, tileImpl: IM, topKImpl: vM, transposeImpl: kM, uniqueImpl: iTt } = Zp;\nvar Bre = xe({ opType: X.ABS, cpuKernelImpl: yM });\nvar NM = { kernelName: ys, backendName: \"webgpu\", kernelFunc: Bre };\nvar Vre = xe({ opType: X.ACOS });\nvar TM = { kernelName: aa, backendName: \"webgpu\", kernelFunc: Vre };\nvar zre = xe({ opType: X.ACOSH });\nvar _M = { kernelName: ia, backendName: \"webgpu\", kernelFunc: zre };\nvar Wre = Ze({ opType: ge.ADD, cpuKernelImpl: q3, supportsComplex: true });\nvar $M = { kernelName: eo, backendName: \"webgpu\", kernelFunc: Wre };\nvar Pg = class {\n constructor(e) {\n this.workPerThread = 1, this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = e[0], this.variableNames = e.map((t10, o) => `T${o}`), this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize, [this.workPerThread, 1, 1]), this.shaderKey = \"addN\";\n }\n getUserCode() {\n let e = [];\n this.variableNames.forEach((n) => {\n e.push(`let v${n} = get${n}ByOutputCoords(coords);`);\n });\n let t10 = this.variableNames.map((n) => `v${n}`).join(\" + \");\n return `\n ${Q(\"index\")} {\n for (var i = 0; i < ${this.workPerThread}; i = i + 1) {\n let flatIndex = index * ${this.workPerThread} + i;\n if (flatIndex < uniforms.size) {\n let coords = getCoordsFromIndex(flatIndex);\n ${e.join(`\n `)}\n setOutputAtIndex(flatIndex, ${t10});\n }\n }\n }\n `;\n }\n};\nfunction Ure(r) {\n let { inputs: e, backend: t10 } = r, o = e;\n if (o.length === 1)\n return Dt({ inputs: { x: o[0] }, backend: t10 });\n let n = o.map((i) => i.dtype).reduce((i, p) => dt(i, p)), s = o.map((i) => i.shape), a = new Pg(s);\n return t10.runWebGPUProgram(a, o, n);\n}\nvar EM = { kernelName: Po, backendName: \"webgpu\", kernelFunc: Ure };\nvar Mg = class {\n constructor(e, t10) {\n this.variableNames = [\"A\"], this.workgroupSize = [16, 16, 1];\n let o = new Array(e.length);\n for (let n = 0; n < o.length; n++)\n o[n] = e[t10[n]];\n this.outputShape = o, this.dispatchLayout = { x: [0], y: [1] }, this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize, [1, 1, 1]), this.shaderKey = \"transposeShared\";\n }\n getUserCode() {\n y.assert(this.workgroupSize[0] === this.workgroupSize[1], () => `Must be a square tile, current tile shape is ${this.workgroupSize[0]} x ${this.workgroupSize[1]}`);\n let e = this.workgroupSize[0];\n return `\n var tile : array, ${this.workgroupSize[0]}>;\n ${Q()} {\n var x = i32(workgroupId.x) * ${e} + i32(localId.x);\n var y = i32(workgroupId.y) * ${e} + i32(localId.y);\n let width = uniforms.outShape[0];\n let height = uniforms.outShape[1];\n if (x < width && y < height) {\n tile[localId.y][localId.x] = f32(A[y * width + x]);\n }\n workgroupBarrier();\n\n x = i32(workgroupId.y) * ${e} + i32(localId.x);\n y = i32(workgroupId.x) * ${e} + i32(localId.y);\n if (x < height && y < width) {\n setOutputAtIndex((y * height + x), tile[localId.x]\n [localId.y]);\n }\n }\n `;\n }\n};\nvar Lg = class {\n constructor(e, t10) {\n this.variableNames = [\"A\"], this.workPerThread = 1, this.workgroupSize = [64, 1, 1], this.size = true;\n let o = new Array(e.length);\n for (let n = 0; n < o.length; n++)\n o[n] = e[t10[n]];\n this.outputShape = o, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize, [this.workPerThread, 1, 1]), this.newDim = t10, this.shaderKey = `transpose_${t10}`;\n }\n getUserCode() {\n let e = Rt(this.outputShape.length), t10 = Gre(this.newDim);\n return `\n ${Q(\"index\")} {\n for(var i = 0; i < ${this.workPerThread}; i = i + 1) {\n let flatIndex = index * ${this.workPerThread} + i;\n if(flatIndex < uniforms.size) {\n let resRC = getCoordsFromIndex(flatIndex);\n setOutputAtIndex(flatIndex, A[getIndexFromCoords${this.outputShape.length}D(\n ${e}(${t10}), uniforms.aShape)]);\n }\n }\n }\n `;\n }\n};\nfunction Gre(r) {\n let e = r.length;\n if (e > 6)\n throw Error(`Transpose for rank ${e} is not yet supported`);\n let t10 = new Array(e);\n for (let o = 0; o < r.length; o++)\n t10[r[o]] = `resRC.${Ao(o)}`;\n return t10.join();\n}\nfunction Nr(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { perm: s } = o, a = t10, i = n.shape.length, p = new Array(i);\n for (let c = 0; c < p.length; c++)\n p[c] = n.shape[s[c]];\n if (t10.shouldExecuteOnCPU([n])) {\n let l = a.tensorMap.get(n.dataId).values, m = kM(l, n.shape, n.dtype, s, p);\n return t10.makeTensorInfo(p, n.dtype, m);\n }\n if (n.shape.length === 2 && y.arraysEqual(s, [1, 0])) {\n let c = new Mg(n.shape, s);\n return a.runWebGPUProgram(c, [n], n.dtype);\n }\n let u = new Lg(n.shape, s);\n return a.runWebGPUProgram(u, [n], n.dtype);\n}\nvar AM = { kernelName: ro, backendName: \"webgpu\", kernelFunc: Nr };\nvar Bg = class {\n constructor(e, t10) {\n this.workgroupSize = [64, 1, 1], this.variableNames = [\"x\"], this.uniforms = \"reduceSize : i32,\", this.size = true, this.inputShape = [e.batchSize, e.inSize];\n let [o] = S.computeOutAndReduceShapes(this.inputShape, [1]);\n this.outputShape = o.length === 0 ? [1] : o, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, [1, 1, 1]), this.reduceType = t10, this.shaderKey = `reduce_${t10}`;\n }\n getUserCode() {\n let e = \"\", t10 = \"0.0\", o = this.workgroupSize[0];\n this.reduceType === \"min\" || this.reduceType === \"max\" ? (e = `\n if (isnan(candidate)) {\n bestValue = uniforms.NAN;\n } else if (!isnan(bestValue) && candidate ${this.reduceType === \"min\" ? \"<\" : \">\"} bestValue)\n { bestValue = candidate; }`, t10 = \"f32(x[offset])\") : this.reduceType === \"sum\" || this.reduceType === \"mean\" ? e = \" bestValue = bestValue + candidate; \" : this.reduceType === \"prod\" ? (e = \" bestValue = bestValue * candidate; \", t10 = \"1.0\") : this.reduceType === \"all\" ? (e = \" bestValue = f32(bestValue >= 1.0 && candidate >= 1.0); \", t10 = \"1.0\") : this.reduceType === \"any\" && (e = \" bestValue = f32(bestValue >= 1.0 || candidate >= 1.0); \", t10 = \"0.0\");\n let n = this.reduceType === \"mean\" ? \"setOutputAtIndex(outputIndex, bestValue / f32(uniforms.reduceSize));\" : \"setOutputAtIndex(outputIndex, bestValue);\";\n return `\n fn DIV_CEIL(a : u32, b : u32) -> u32 {\n return ((a - 1u) / b + 1u);\n }\n\n ${`\n var xBestValues : array;\n `}\n fn getOffset(outputIndex : i32) -> i32 {\n let outputCoords = getCoordsFromIndex(outputIndex);\n let offset = ${this.outputShape.length === 1 ? \"outputCoords\" : \"outputCoords[0]\"} * uniforms.reduceSize;\n return offset;\n }\n ${Q(\"index\")} {\n let outputIndex = index / ${o};\n let offset = getOffset(outputIndex);\n var bestValue = ${t10};\n let Length = uniforms.reduceSize;\n let WorkPerThread = DIV_CEIL(u32(Length), ${o}u);\n for (var k = i32(localId.x); k < Length && outputIndex < uniforms.size;\n k = k + ${o}) {\n let candidate = f32(x[offset + k]);\n ${e}\n }\n xBestValues[localId.x] = bestValue;\n workgroupBarrier();\n\n var reduceSize = min(u32(Length), ${o}u);\n for (var currentSize = reduceSize / 2u; reduceSize > 1u;\n currentSize = reduceSize / 2u) {\n let interval = DIV_CEIL(reduceSize, 2u);\n if (localId.x < currentSize) {\n let candidate = xBestValues[localId.x + interval];\n ${e}\n xBestValues[localId.x] = bestValue;\n }\n reduceSize = interval;\n workgroupBarrier();\n }\n\n if (localId.x == 0u && outputIndex < uniforms.size) {\n ${n}\n }\n }\n `;\n }\n};\nfunction Kr(r, e, t10, o, n) {\n let s = r.shape.length, a = [], i = y.parseAxisParam(e, r.shape), p = i, u = S.getAxesPermutation(p, s), c = r;\n u != null && (c = Nr({ inputs: { x: r }, attrs: { perm: u }, backend: n }), p = S.getInnerMostAxes(p.length, s), a.push(c)), S.assertAxesAreInnerMostDims(o, p, s);\n let [l, m] = S.computeOutAndReduceShapes(c.shape, p), d = l;\n t10 && (d = S.expandShapeToKeepDim(l, i));\n let f;\n if ((o === \"max\" || o === \"prod\") && n.shouldExecuteOnCPU([c])) {\n let h = n.tensorMap.get(c.dataId).values;\n switch (o) {\n case \"max\":\n let g = uM(h, y.sizeFromShape(m), d, r.dtype);\n f = n.makeTensorInfo(d, r.dtype, g);\n break;\n case \"prod\":\n let { outVals: x, outShape: b, outDtype: C } = fM(c.shape, c.dtype, h, p);\n f = n.makeTensorInfo(b, C, x);\n break;\n default:\n throw new Error(`${o} CPU implementation is not yet supported.`);\n }\n } else {\n let h = y.sizeFromShape(m), x = y.sizeFromShape(c.shape) / h, b = { windowSize: h, inSize: h, batchSize: x, outSize: 1 }, C = o === \"mean\" ? \"float32\" : Ta(r.dtype), w = [{ type: \"int32\", data: [h] }], k = new Bg(b, o), _ = n.runWebGPUProgram(k, [c], C, w);\n a.push(_), f = me({ inputs: { x: _ }, attrs: { shape: d }, backend: n });\n }\n return a.forEach((h) => n.disposeData(h.dataId)), f;\n}\nfunction Hre(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { keepDims: s, axis: a } = o;\n return Kr(n, a, s, \"all\", t10);\n}\nvar RM = { kernelName: Mo, backendName: \"webgpu\", kernelFunc: Hre };\nfunction Kre(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { keepDims: s, axis: a } = o;\n return Kr(n, a, s, \"any\", t10);\n}\nvar DM = { kernelName: Lo, backendName: \"webgpu\", kernelFunc: Kre };\nvar Nc = class {\n constructor(e, t10, o) {\n this.workgroupSize = [64, 1, 1], this.variableNames = [\"x\"], this.uniforms = \"infinityValue : f32,\", this.size = true;\n let n = [t10];\n this.op = o === \"min\" ? \"<\" : \">\";\n let [s, a] = S.computeOutAndReduceShapes(e, n);\n this.outputShape = s.length === 0 ? [1] : s, this.dispatchLayout = ae(this.outputShape), y.sizeFromShape(a) < 32 || y.sizeFromShape(s) > 1e3 ? (this.type = \"plain\", this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize)) : (this.type = \"shared\", this.dispatch = Y(this.dispatchLayout, this.outputShape, [1, 1, 1])), this.inputShape = e, this.shaderKey = `argMinMax_${this.op}_${this.type}`;\n }\n getUserCode() {\n let e = this.workgroupSize[0], t10 = () => this.inputShape.length === 1 ? \"uniforms.xShape\" : `uniforms.xShape.${Ao(this.inputShape.length - 1)}`, o = () => {\n let n = \"\";\n if (this.outputShape.length === 1)\n this.inputShape.length !== 1 && (n += \"outputCoords,\");\n else\n for (let s = 0; s < this.outputShape.length; s++)\n n += `outputCoords.${Ao(s)},`;\n return n;\n };\n return this.type === \"shared\" ? `\n fn DIV_CEIL(a : u32, b : u32) -> u32 {\n return ((a - 1u) / b + 1u);\n }\n\n ${`\n var xBestIndices : array;\n var xBestValues : array;\n `}\n\n ${Q(\"index\")} {\n let outputIndex = index / ${e};\n let reduceLength = ${t10()};\n\n var bestIndex = i32(localId.x);\n var bestValue = uniforms.infinityValue;\n let outputCoords = getCoordsFromIndex(outputIndex);\n for (var k = i32(localId.x); k < reduceLength && outputIndex < uniforms.size;\n k = k + ${e}) {\n let candidate = getX(${o()} k);\n if (!isnan(candidate) && candidate ${this.op} bestValue) {\n bestValue = candidate;\n bestIndex = k;\n }\n }\n xBestValues[localId.x] = bestValue;\n xBestIndices[localId.x] = bestIndex;\n workgroupBarrier();\n\n var reduceSize = min(u32(reduceLength), ${e}u);\n for (var currentSize = reduceSize / 2u; reduceSize > 1u;\n currentSize = reduceSize / 2u) {\n let interval = DIV_CEIL(reduceSize, 2u);\n if (localId.x < currentSize) {\n let candidate = xBestValues[localId.x + interval];\n if (candidate ${this.op} bestValue) {\n bestValue = candidate;\n xBestValues[localId.x] = bestValue;\n xBestIndices[localId.x] = xBestIndices[localId.x + interval];\n }\n }\n reduceSize = interval;\n workgroupBarrier();\n }\n\n if (localId.x == 0u && outputIndex < uniforms.size) {\n setOutputAtIndexI32(outputIndex, xBestIndices[localId.x]);\n }\n }\n ` : `\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let outputCoords = getCoordsFromIndex(index);\n var bestIndex = 0;\n var bestValue = getX(${o()} 0);\n let reduceLength = ${t10()};\n for (var i = 1; i < reduceLength; i++) {\n let candidate = getX(${o()} i);\n if (candidate ${this.op} bestValue) {\n bestValue = candidate;\n bestIndex = i;\n }\n }\n setOutputAtIndexI32(index, bestIndex);\n }\n }\n `;\n }\n};\nfunction qre(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s } = o, a = y.parseAxisParam(s, n.shape), i = S.getAxesPermutation(a, n.shape.length), p = n, u = [];\n i != null && (p = Nr({ inputs: { x: n }, backend: t10, attrs: { perm: i } }), u.push(p), a = S.getInnerMostAxes(a.length, p.shape.length)), S.assertAxesAreInnerMostDims(\"argMax\", [a[0]], p.shape.length);\n let c = new Nc(p.shape, a[0], \"max\"), l = [{ type: \"float32\", data: [Number.NEGATIVE_INFINITY] }], m = t10.runWebGPUProgram(c, [p], \"int32\", l);\n return u.forEach((d) => t10.disposeData(d.dataId)), m;\n}\nvar FM = { kernelName: Bo, backendName: \"webgpu\", kernelFunc: qre };\nfunction jre(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s } = o, a = y.parseAxisParam(s, n.shape), i = S.getAxesPermutation(a, n.shape.length), p = n, u = [];\n i != null && (p = Nr({ inputs: { x: n }, backend: t10, attrs: { perm: i } }), u.push(p), a = S.getInnerMostAxes(a.length, p.shape.length)), S.assertAxesAreInnerMostDims(\"argMin\", [a[0]], p.shape.length);\n let c = new Nc(p.shape, a[0], \"min\"), l = [{ type: \"float32\", data: [Number.POSITIVE_INFINITY] }], m = t10.runWebGPUProgram(c, [p], \"int32\", l);\n return u.forEach((d) => t10.disposeData(d.dataId)), m;\n}\nvar OM = { kernelName: ei, backendName: \"webgpu\", kernelFunc: jre };\nvar Xre = xe({ opType: X.ASIN });\nvar PM = { kernelName: ua, backendName: \"webgpu\", kernelFunc: Xre };\nvar Yre = xe({ opType: X.ASINH });\nvar MM = { kernelName: pa, backendName: \"webgpu\", kernelFunc: Yre };\nvar Qre = xe({ opType: X.ATAN });\nvar LM = { kernelName: ca, backendName: \"webgpu\", kernelFunc: Qre };\nvar Zre = Ze({ opType: ge.ATAN2 });\nvar BM = { kernelName: ma, backendName: \"webgpu\", kernelFunc: Zre };\nvar Jre = xe({ opType: X.ATANH });\nvar VM = { kernelName: la, backendName: \"webgpu\", kernelFunc: Jre };\nvar Gl = class {\n constructor(e, t10) {\n this.variableNames = [\"x\"], this.uniforms = \"stride : vec2, pad : vec2, dilation : vec2, convDims : vec2, filterDims : vec2,\", this.workgroupSize = [128, 1, 1], this.size = true, this.outputShape = e.outShape, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.shaderKey = `pool2D_${t10}`, this.poolType = t10;\n }\n getUserCode() {\n let e = \"resultValue = max(value, resultValue);\";\n this.poolType === \"avg\" && (e = \"resultValue = resultValue + value; count = count + 1.0;\");\n let t10 = \"resultValue\";\n return this.poolType === \"avg\" && (t10 = \"resultValue / max(count, 1.0)\"), `\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let coords = getCoordsFromIndex(index);\n let batch = coords[0];\n let xRCCorner = vec2(coords.yz) * uniforms.stride - uniforms.pad;\n let xRCorner = xRCCorner.x;\n let xCCorner = xRCCorner.y;\n\n var resultValue = ${this.poolType === \"avg\" ? \"0.0\" : \"-1.0 / pow(10.0, -20.0)\"};\n var count = 0.0;\n\n for (var wR = 0; wR < uniforms.filterDims.x; wR = wR + uniforms.dilation.x) {\n let xR = xRCorner + wR;\n\n if (xR < 0 || xR >= uniforms.convDims.x) {\n continue;\n }\n\n for (var wC = 0; wC < uniforms.filterDims.y; wC = wC + uniforms.dilation.y) {\n let xC = xCCorner + wC;\n if (xC < 0 || xC >= uniforms.convDims.y) {\n continue;\n }\n\n let value = getX(batch, xR, xC, coords[3]);\n ${e}\n }\n }\n\n setOutputAtIndex(index, ${t10});\n }\n }\n `;\n }\n};\nvar Vg = class {\n constructor(e) {\n this.variableNames = [\"x\"], this.uniforms = \"stride : vec2,\", this.workgroupSize = [256, 1, 1], this.size = true, this.outputShape = e.outShape, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.shaderKey = \"poolWithFilterSizeEqualsOne\";\n }\n getUserCode() {\n return `\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let coords = getCoordsFromIndex(index);\n let batch = coords[0];\n let d = coords[3];\n\n let xRCCorner = coords.yz * uniforms.stride;\n let xRCorner = xRCCorner.x;\n let xCCorner = xRCCorner.y;\n\n let value = getX(batch, xRCorner, xCCorner, d);\n setOutputAtIndex(index, value);\n }\n }\n `;\n }\n};\nfunction Hl(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { reductionIndices: s, keepDims: a } = o;\n return Kr(n, s, a, \"max\", t10);\n}\nvar zM = { kernelName: yn, backendName: \"webgpu\", kernelFunc: Hl };\nfunction yI(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { keepDims: s, axis: a } = o;\n return Kr(n, a, s, \"mean\", t10);\n}\nvar WM = { kernelName: Sn, backendName: \"webgpu\", kernelFunc: yI };\nfunction zg(r, e, t10, o) {\n if (e.filterWidth === 1 && e.filterHeight === 1 && y.arraysEqual(e.inShape, e.outShape))\n return Dt({ inputs: { x: r }, backend: o });\n if (e.filterWidth === e.inWidth && e.filterHeight === e.inHeight && e.batchSize === 1 && e.padInfo.type === \"VALID\") {\n let a = r.shape.length, i = me({ inputs: { x: r }, backend: o, attrs: { shape: [r.shape[a - 3] * r.shape[a - 2], r.shape[a - 1]] } }), p;\n t10 === \"avg\" ? p = yI({ inputs: { x: i }, backend: o, attrs: { axis: 0, keepDims: false } }) : (y.assert(t10 === \"max\", () => `Invalid pool type ${t10}`), p = Hl({ inputs: { x: i }, backend: o, attrs: { reductionIndices: 0, keepDims: false } }));\n let u = me({ inputs: { x: p }, backend: o, attrs: { shape: e.outShape } });\n return o.disposeData(i.dataId), o.disposeData(p.dataId), u;\n }\n let n, s = [{ type: \"int32\", data: [e.strideHeight, e.strideWidth] }];\n return e.filterHeight === 1 && e.filterWidth === 1 ? n = new Vg(e) : (t10 === \"avg\" ? n = new Gl(e, \"avg\") : (y.assert(t10 === \"max\", () => `Invalid pool type ${t10}`), n = new Gl(e, \"max\")), s.push({ type: \"int32\", data: [e.padInfo.top, e.padInfo.left] }, { type: \"int32\", data: [e.dilationHeight, e.dilationWidth] }, { type: \"int32\", data: [e.inHeight, e.inWidth] }, { type: \"int32\", data: [e.effectiveFilterHeight, e.effectiveFilterWidth] })), o.runWebGPUProgram(n, [r], r.dtype, s);\n}\nfunction eoe(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { filterSize: s, strides: a, pad: i, dimRoundingMode: p } = o, u = 1, c = S.computePool2DInfo(n.shape, s, a, u, i, p);\n return zg(n, c, \"avg\", t10);\n}\nvar UM = { kernelName: Vo, backendName: \"webgpu\", kernelFunc: eoe };\nvar Wg = class {\n constructor(e) {\n this.variableNames = [\"dy\"], this.uniforms = `stride : vec2, pads : vec2, dilation : vec2, filterDims : vec2,\n outHeight : i32, outWidth : i32, avgMultiplier : f32,`, this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = e.inShape, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.shaderKey = \"avg_pool2d_backprop\";\n }\n getUserCode() {\n return `\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let coords = getCoordsFromIndex(index);\n let batch = coords[0];\n let d = coords[3];\n\n let dyRCCorner = vec2(coords.yz) - uniforms.pads;\n let dyRCorner = dyRCCorner.x;\n let dyCCorner = dyRCCorner.y;\n\n // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n // ? = to be determined. : = across all values in that axis.\n var dotProd = 0.0;\n for (var wR = 0; wR < uniforms.filterDims[0]; wR = wR + uniforms.dilation[0]) {\n let dyR = f32(dyRCorner + wR) / f32(uniforms.stride[0]);\n\n if (dyR < 0.0 || dyR >= f32(uniforms.outHeight) || fract(dyR) > 0.0) {\n continue;\n }\n let idyR = i32(dyR);\n\n for (var wC = 0; wC < uniforms.filterDims[1]; wC = wC + uniforms.dilation[1]) {\n let dyC = f32(dyCCorner + wC) / f32(uniforms.stride[1]);\n\n if (dyC < 0.0 || dyC >= f32(uniforms.outWidth) || fract(dyC) > 0.0) {\n continue;\n }\n let idyC = i32(dyC);\n\n let dyValue = getDy(batch, idyR, idyC, d);\n\n dotProd = dotProd + dyValue * uniforms.avgMultiplier;\n }\n }\n setOutputAtIndex(index, dotProd);\n }\n }\n `;\n }\n};\nfunction toe(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { dy: n, input: s } = e, a = s;\n fI([n, s], \"avgPoolGrad\");\n let { filterSize: i, strides: p, pad: u } = o, c = S.computePool2DInfo(a.shape, i, p, 1, u), l = new Wg(c), m = 1 / (c.filterHeight * c.filterWidth), d = [{ type: \"int32\", data: [c.strideHeight, c.strideWidth] }, { type: \"int32\", data: [c.effectiveFilterHeight - 1 - c.padInfo.top, c.effectiveFilterWidth - 1 - c.padInfo.left] }, { type: \"int32\", data: [c.dilationHeight, c.dilationWidth] }, { type: \"int32\", data: [c.effectiveFilterHeight, c.effectiveFilterWidth] }, { type: \"int32\", data: [c.outHeight] }, { type: \"int32\", data: [c.outWidth] }, { type: \"float32\", data: [m] }];\n return t10.runWebGPUProgram(l, [n], a.dtype, d);\n}\nvar GM = { kernelName: mp, backendName: \"webgpu\", kernelFunc: toe };\nfunction roe(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { a: n, b: s } = e, { transposeA: a, transposeB: i } = o;\n return Xu({ a: n, b: s, transposeA: a, transposeB: i, backend: t10 });\n}\nvar HM = { kernelName: zo, backendName: \"webgpu\", kernelFunc: roe };\nvar Ug = class {\n constructor(e, t10) {\n this.variableNames = [\"source\"], this.workPerThread = 1, this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = t10, this.rank = t10.length, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize, [this.workPerThread, 1, 1]), this.start = e, this.uniforms = `start : ${Rt(e.length)}, `, this.shaderKey = \"slice\";\n }\n getUserCode() {\n let e = Rt(this.rank), t10 = ooe(this.rank), o;\n return this.start.length === 1 ? o = this.outputShape.map((s, a) => \"sourceLoc = uniforms.start + coords;\") : o = this.outputShape.map((s, a) => `sourceLoc.${bI[a]} = uniforms.start.${Ao(a)} + coords.${bI[a]};`), `\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n var sourceLoc : ${e};\n let coords = getCoordsFromIndex(index);\n ${o.join(`\n`)}\n setOutputAtIndex(index, getSource(${t10}));\n }\n }\n `;\n }\n};\nvar bI = [\"x\", \"y\", \"z\", \"w\", \"u\", \"v\"];\nfunction ooe(r) {\n if (r === 1)\n return \"sourceLoc\";\n if (r <= 6)\n return bI.slice(0, r).map((e) => `sourceLoc.${e}`).join(\",\");\n throw Error(`Slicing for rank ${r} is not yet supported`);\n}\nfunction fs(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { begin: s, size: a } = o, [i, p] = ut.parseSliceParams(n, s, a);\n if (ut.assertParamsValid(n, i, p), t10.shouldExecuteOnCPU([n]) || n.dtype === \"string\") {\n let l = t10.tensorMap.get(n.dataId), m = bM(l.values, i, p, n.shape, n.dtype);\n return t10.makeTensorInfo(p, n.dtype, m);\n }\n if (y.sizeFromShape(p) === 0)\n return t10.makeTensorInfo(p, n.dtype, []);\n let u = new Ug(i, p), c = [{ type: \"int32\", data: i }];\n return t10.runWebGPUProgram(u, [n], n.dtype, c);\n}\nvar KM = { kernelName: Es, backendName: \"webgpu\", kernelFunc: fs };\nvar noe = (r) => {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { blockShape: s, crops: a } = o;\n y.assert(n.shape.length <= 4, () => \"batchToSpaceND for rank > 4 with a WebGPU backend not implemented yet\");\n let i = s.reduce((b, C) => b * C), p = S.getReshaped(n.shape, s, i), u = S.getPermuted(p.length, s.length), c = S.getReshapedPermuted(n.shape, s, i), l = S.getSliceBeginCoords(a, s.length), m = S.getSliceSize(c, a, s.length), d = [], f = me({ inputs: { x: n }, backend: t10, attrs: { shape: p } }), h = Nr({ inputs: { x: f }, backend: t10, attrs: { perm: u } }), g = me({ inputs: { x: h }, backend: t10, attrs: { shape: c } }), x = fs({ inputs: { x: g }, backend: t10, attrs: { begin: l, size: m } });\n return d.push(f), d.push(h), d.push(g), d.forEach((b) => t10.disposeData(b.dataId)), x;\n};\nvar qM = { kernelName: bs, backendName: \"webgpu\", kernelFunc: noe };\nvar soe = `\n fn bincount_write(index: i32, value: f32) {\n ${Ic(\"&result[index]\", \"value\", \"float32\")}\n }\n`;\nvar aoe = `\n fn bincount_write(index: i32, value: f32) {\n atomicStore(&result[index], bitcast(value));\n }\n`;\nvar Tc = class {\n constructor(e, t10, o = false) {\n this.outputShape = [], this.variableNames = [\"x\"], this.uniforms = \"binCountSize : i32,\", this.workgroupSize = [64, 1, 1], this.atomic = true, this.hasWeights = true, this.binaryOutput = false, this.outputShape = e, this.rank = e.length, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.binaryOutput = o, o && (this.atomic = false), this.hasWeights = t10, this.hasWeights && this.variableNames.push(\"w\"), this.shaderKey = `bincount_${this.hasWeights}_${this.binaryOutput}_${this.rank}`;\n }\n getUserCode() {\n return `\n ${this.binaryOutput ? aoe : soe}\n ${Q(\"index\")} {\n ${this.rank === 1 ? `if (index < uniforms.xShape) {\n let indexVal = i32(getX(index));\n if (indexVal < uniforms.binCountSize) {\n let value = ${this.binaryOutput ? 1 : this.hasWeights ? \"getW(index)\" : \"1.\"};\n bincount_write(indexVal, value);\n }\n }` : `let coord = getCoordsFromIndex(index);\n if (coordsInBounds2D(coord, uniforms.xShape)) {\n let indexVal = i32(getX(coord[0], coord[1]));\n if (indexVal < uniforms.binCountSize) {\n let value = ${this.binaryOutput ? 1 : this.hasWeights ? \"getW(coord[0], coord[1])\" : \"1.\"};\n bincount_write(coord.x * uniforms.binCountSize + indexVal, value);\n }\n }`}\n }\n `;\n }\n};\nfunction ioe(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, weights: s } = e, { size: a } = o, i = y.sizeFromShape(n.shape), u = y.sizeFromShape(s.shape) > 0, c = [a], l = s.dtype, m = fr({ backend: t10, attrs: { shape: c, value: 0, dtype: l } }), d = new Tc([i], u), f = [{ type: \"int32\", data: [a] }], h = u ? [n, s] : [n];\n return t10.runWebGPUProgram(d, h, l, f, m);\n}\nvar jM = { kernelName: ti, backendName: \"webgpu\", kernelFunc: ioe };\nvar CI = Ze({ opType: ge.NOT_EQUAL, dtype: \"bool\", cpuKernelImpl: dM });\nvar XM = { kernelName: Nn, backendName: \"webgpu\", kernelFunc: CI };\nfunction Xa(r) {\n let { inputs: e, backend: t10 } = r, { input: o } = e, n = t10.tensorMap.get(o.dataId);\n return Dt({ inputs: { x: n.complexTensorInfos.real }, backend: t10 });\n}\nvar YM = { kernelName: di, backendName: \"webgpu\", kernelFunc: Xa };\nfunction QM(r, e) {\n let t10 = new Hr(r.shape, X.TO_INT), o = e.runWebGPUProgram(t10, [r], \"int32\");\n return { dataId: o.dataId, shape: o.shape, dtype: o.dtype };\n}\nfunction SI(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { dtype: s } = o;\n if (s === \"complex64\") {\n if (n.dtype === \"complex64\")\n return Dt({ inputs: { x: n }, backend: t10 });\n let a = Br(n.shape), i = SI({ inputs: { x: n }, backend: t10, attrs: { dtype: \"float32\" } }), p = po({ inputs: { real: i, imag: a }, backend: t10 });\n return a.dispose(), t10.disposeData(i.dataId), p;\n }\n if (n.dtype === \"complex64\") {\n let a = Xa({ inputs: { input: n }, backend: t10 }), i = SI({ inputs: { x: a }, backend: t10, attrs: { dtype: s } });\n return t10.disposeData(a.dataId), i;\n }\n if (!y.hasEncodingLoss(n.dtype, s)) {\n let a = Dt({ inputs: { x: n }, backend: t10 });\n return { dataId: a.dataId, shape: a.shape, dtype: s };\n }\n if (t10.shouldExecuteOnCPU([n])) {\n let a = t10.tensorMap.get(n.dataId).values, [i, p, u] = j3(a, n.shape, n.dtype, s);\n return t10.makeTensorInfo(i, p, u);\n }\n if (s === \"int32\")\n return QM(n, t10);\n if (s === \"bool\") {\n let a = t10.makeTensorInfo([], \"bool\", y.getTypedArrayFromDType(\"bool\", 1)), p = CI({ inputs: { a: n, b: a }, backend: t10 });\n return t10.disposeData(a.dataId), p;\n }\n throw new Error(`Error in Cast: failed to cast ${n.dtype} to ${s}`);\n}\nvar ZM = { kernelName: co, backendName: \"webgpu\", kernelFunc: SI };\nvar uoe = xe({ opType: X.CEIL, cpuKernelImpl: X3 });\nvar JM = { kernelName: Wo, backendName: \"webgpu\", kernelFunc: uoe };\nvar Gg = class {\n constructor(e) {\n this.variableNames = [\"A\"], this.uniforms = \"minVal : f32, maxVal : f32,\", this.workPerThread = 4, this.workgroupSize = [64, 1, 1], this.isVec4 = true, this.size = true, this.outputShape = e, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize, [this.workPerThread, 1, 1]), this.shaderKey = \"clipVec4\";\n }\n getUserCode() {\n return `\n ${Q(\"index\")} {\n if(index < uniforms.size) {\n let value = getAByOutputIndex(index);\n var clampedValue = clamp(\n value, vec4(uniforms.minVal), vec4(uniforms.maxVal));\n clampedValue = select(clampedValue, value, isnanVec4(value));\n setOutputAtIndex(index, clampedValue);\n }\n }\n `;\n }\n};\nvar Hg = class {\n constructor(e) {\n this.variableNames = [\"A\"], this.uniforms = \"minVal : f32, maxVal : f32,\", this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = e, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.shaderKey = \"clip\";\n }\n getUserCode() {\n return `\n ${Q(\"index\")} {\n if(index < uniforms.size) {\n let value = getAByOutputIndex(index);\n if (isnan(value)) {\n setOutputAtIndex(index, value);\n return;\n }\n setOutputAtIndex(index, clamp(value, uniforms.minVal, uniforms.maxVal));\n }\n }\n `;\n }\n};\nfunction poe(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { clipValueMin: s, clipValueMax: a } = o, i, p = [{ type: \"float32\", data: [s] }, { type: \"float32\", data: [a] }];\n return y.sizeFromShape(n.shape) % 4 === 0 ? i = new Gg(n.shape) : i = new Hg(n.shape), t10.runWebGPUProgram(i, [n], n.dtype, p);\n}\nvar eL = { kernelName: lo, backendName: \"webgpu\", kernelFunc: poe };\nvar Kg = class {\n constructor(e) {\n this.uniforms = \"\", this.workPerThread = 1, this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = S.computeOutShape(e, 1), this.variableNames = e.map((t10, o) => `T${o}`), this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize, [this.workPerThread, 1, 1]), this.offsetLength = e.length - 1;\n for (let t10 = 0; t10 < this.offsetLength; t10++)\n this.uniforms += `offset${t10} : i32,`;\n this.shaderKey = \"concat\";\n }\n getUserCode() {\n let e = [];\n if (this.offsetLength > 0) {\n e.push(\"if (yC < uniforms.offset0){ setOutputAtCoords(coords.x, coords.y, getT0(yR, yC)); }\");\n for (let s = 1; s < this.offsetLength; s++)\n e.push(`else if (yC < uniforms.offset${[s]}){ setOutputAtCoords(coords.x, coords.y, getT${s}(yR, yC - uniforms.offset${s - 1})); }`);\n let o = this.offsetLength, n = this.offsetLength - 1;\n e.push(`else { setOutputAtCoords(coords.x, coords.y, getT${o}(yR, yC - uniforms.offset${n})); }`);\n } else\n e.push(\"setOutputAtCoords(coords.x, coords.y, getT0(yR, yC));\");\n return `\n ${Q(\"index\")} {\n for(var i = 0; i < ${this.workPerThread}; i = i + 1) {\n let flatIndex = index * ${this.workPerThread} + i;\n if(flatIndex < uniforms.size) {\n let coords = getCoordsFromIndex(flatIndex);\n let yR = coords.x;\n let yC = coords.y;\n\n ${e.join(`\n `)}\n }\n }\n }\n `;\n }\n};\nfunction Qu(r) {\n let { inputs: e, backend: t10 } = r, { input: o } = e, n = t10.tensorMap.get(o.dataId);\n return Dt({ inputs: { x: n.complexTensorInfos.imag }, backend: t10 });\n}\nvar tL = { kernelName: ci, backendName: \"webgpu\", kernelFunc: Qu };\nfunction _c(r, e, t10) {\n let o = r[0].dtype;\n if (o === \"complex64\") {\n let f = r.map((C) => Xa({ inputs: { input: C }, backend: t10 })), h = r.map((C) => Qu({ inputs: { input: C }, backend: t10 })), g = _c(f, e, t10), x = _c(h, e, t10), b = po({ inputs: { real: g, imag: x }, backend: t10 });\n return f.forEach((C) => t10.disposeData(C.dataId)), h.forEach((C) => t10.disposeData(C.dataId)), t10.disposeData(g.dataId), t10.disposeData(x.dataId), b;\n }\n let n = t10.shouldExecuteOnCPU(r);\n if (o === \"string\" && (n = true), n) {\n let f = r.map((k) => {\n let E = [-1, y.sizeFromShape(k.shape.slice(e))];\n return me({ inputs: { x: k }, backend: t10, attrs: { shape: E } });\n }), h = f.map((k) => ({ vals: t10.readSync(k.dataId), shape: k.shape })), g = S.computeOutShape(f.map((k) => k.shape), 1), x = f[0].shape[0] === 1, b = Y3(h, g, o, x), C = S.computeOutShape(r.map((k) => k.shape), e), w = t10.makeTensorInfo(C, o, b);\n return f.forEach((k) => t10.disposeData(k.dataId)), w;\n }\n let s = t10.device.limits.maxStorageBuffersPerShaderStage - 1;\n if (r.length > s) {\n let f = [];\n for (let g = 0; g < r.length; g += s) {\n let x = r.slice(g, g + s);\n f.push(_c(x, e, t10));\n }\n let h = _c(f, e, t10);\n for (let g of f)\n t10.disposeData(g.dataId);\n return h;\n }\n let { tensors2D: a, outShape: i } = coe(r, e, t10), p = a.map((f) => f.shape), u = new Kg(p), c = [], l = new Array(p.length - 1);\n if (l.length > 0) {\n l[0] = p[0][1], c.push({ type: \"int32\", data: [l[0]] });\n for (let f = 1; f < l.length; f++)\n l[f] = l[f - 1] + p[f][1], c.push({ type: \"int32\", data: [l[f]] });\n }\n let m = t10.runWebGPUProgram(u, a, a[0].dtype, c);\n a.forEach((f) => t10.disposeData(f.dataId));\n let d = me({ inputs: { x: m }, backend: t10, attrs: { shape: i } });\n return t10.disposeData(m.dataId), d;\n}\nfunction coe(r, e, t10) {\n let o = S.computeOutShape(r.map((s) => s.shape), e);\n return { tensors2D: r.map((s) => me({ inputs: { x: s }, backend: t10, attrs: { shape: [y.sizeFromShape(s.shape.slice(0, e)), y.sizeFromShape(s.shape.slice(e))] } })), outShape: o };\n}\nfunction wI(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { axis: n } = o, s = y.parseAxisParam(n, e[0].shape)[0], a = e.map((u) => u.shape);\n S.assertParamsConsistent(a, s);\n let i = S.computeOutShape(e.map((u) => u.shape), s);\n if (y.sizeFromShape(i) === 0)\n return t10.makeTensorInfo(i, e[0].dtype, []);\n let p = e.filter((u) => y.sizeFromShape(u.shape) > 0);\n return p.length === 1 ? Dt({ inputs: { x: p[0] }, backend: t10 }) : _c(p, s, t10);\n}\nvar rL = { kernelName: Cs, backendName: \"webgpu\", kernelFunc: wI };\nfunction loe(r, e, t10, o, n = false, s = null, a = false, i = 4, p = 4, u = 4) {\n let c = (R) => {\n switch (R) {\n case 1:\n return \"resData = x[xIndex];\";\n case 3:\n return \"resData = vec3(x[xIndex], x[xIndex + 1], x[xIndex + 2]);\";\n case 4:\n return \"resData = x[xIndex / 4];\";\n default:\n throw new Error(`innerElementSize ${R} is not supported.`);\n }\n }, l = (R) => {\n switch (R) {\n case 1:\n return \"return W[row * uniforms.wShape[3] + colIn];\";\n case 4:\n return \"return W[row * uniforms.wShape[3] / 4 + colIn];\";\n default:\n throw new Error(`innerElementSize ${R} is not supported.`);\n }\n }, m = r ? `\n let coord = vec4(batch, xRow, xCol, xCh);\n ` : `\n let coord = vec4(batch, xCh, xRow, xCol);\n `, d = r ? `\n let coords = vec4(\n batch,\n row / outWidth,\n row % outWidth,\n col);\n ` : `\n let coords = vec4(\n batch,\n row,\n col / outWidth,\n col % outWidth);\n `, f = r ? \"uniforms.xShape[1]\" : \"uniforms.xShape[2]\", h = r ? \"uniforms.xShape[2]\" : \"uniforms.xShape[3]\", g = r ? \"row\" : \"col\", x = r ? \"col\" : \"row\", b = `\n let inChannels = uniforms.wShape[2];\n let outWidth = ${r ? \"uniforms.outShape[2]\" : \"uniforms.outShape[3]\"};\n let outRow = ${g} / outWidth;\n let outCol = ${g} % outWidth;\n\n let WRow = ${x} / (uniforms.filterDims[1] * inChannels);\n let WCol = ${x} / inChannels % uniforms.filterDims[1];\n let xRow = outRow * uniforms.stride[0] + uniforms.dilation[0] * WRow - uniforms.pad[0];\n let xCol = outCol * uniforms.stride[1] + uniforms.dilation[1] * WCol - uniforms.pad[1];\n let xCh = ${x} % inChannels;\n var resData = ${kt(i)}(0.0);\n // The bounds checking is always needed since we use it to pad zero for\n // the 'same' padding type.\n if (xRow >= 0 && xRow < ${f} && xCol >= 0 && xCol < ${h}) {\n ${m}\n let xIndex = getIndexFromCoords4D(coord, uniforms.xShape);\n ${c(i)}\n }\n return resData;`, C = r ? e && o ? `\n let col = colIn * ${i};\n ${b}` : `\n let col = colIn * ${i};\n if (row < uniforms.dimAOuter && col < uniforms.dimInner) {\n ${b}\n }\n return ${kt(i)}(0.0);` : o && t10 ? `\n let col = colIn * ${i};\n ${b}` : `\n let col = colIn * ${i};\n if (row < uniforms.dimInner && col < uniforms.dimBOuter) {\n ${b}\n }\n return ${kt(i)}(0.0);`, w = `${l(p)}`, k = kt(u), _ = r ? kt(i) : kt(p), E = r ? kt(p) : kt(i);\n return `\n ${pr(s, a, u === 4, 4)}\n fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${_} {\n ${r ? C : w}\n }\n\n fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${E} {\n ${r ? w : C}\n }\n\n fn mm_write(batch: i32, row : i32, colIn : i32, valueIn : ${k}) {\n let col = colIn * ${u};\n if (row < uniforms.dimAOuter && col < uniforms.dimBOuter)\n {\n var value = valueIn;\n let outWidth = ${r ? \"uniforms.outShape[2]\" : \"uniforms.outShape[3]\"};\n ${d}\n ${Gr(n, s)}\n setOutputAtCoords(coords[0], coords[1], coords[2], coords[3], value);\n }\n }`;\n}\nvar qg = class {\n constructor(e, t10, o, n, s = false, a = null, i = false, p = false) {\n this.variableNames = [\"x\", \"W\"], this.uniforms = \"filterDims : vec2, pad : vec2, stride : vec2, dilation : vec2, dimAOuter : i32, dimBOuter : i32, dimInner : i32,\", this.outputShape = e.outShape, this.isChannelsLast = e.dataFormat === \"channelsLast\", this.isVec4 = ((e.inChannels % 4 === 0 || e.inChannels % 3 === 0) && this.isChannelsLast || e.outWidth % 4 === 0 && !this.isChannelsLast) && e.outChannels % 4 === 0, this.dispatchLayout = this.isChannelsLast ? { x: [3], y: [1, 2], z: [0] } : { x: [2, 3], y: [1], z: [0] }, this.workgroupSize = Bl(this.dispatchLayout, this.outputShape, this.isVec4), this.elementsPerThread = Vl(this.dispatchLayout, this.outputShape, this.isVec4), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize, this.elementsPerThread), this.isVec4 ? (this.isChannelsLast && e.inChannels % 4 !== 0 ? (this.innerElementSize = 3, this.variableTypes = [\"f32\", \"vec4\"]) : (this.innerElementSize = 4, this.variableTypes = [\"vec4\", \"vec4\"]), s && (this.variableNames.push(\"bias\"), this.variableTypes.push(\"vec4\")), i && (this.variableNames.push(\"preluActivationWeights\"), this.variableTypes.push(\"vec4\"))) : (this.innerElementSize = this.elementsPerThread[0], s && this.variableNames.push(\"bias\"), i && this.variableNames.push(\"preluActivationWeights\")), this.sequentialAccessByThreads = p, this.addBias = s, this.activation = a, this.hasPreluActivationWeights = i, this.tileAOuter = this.workgroupSize[1] * this.elementsPerThread[1], this.tileBOuter = this.workgroupSize[0] * this.elementsPerThread[0], this.tileInner = Math.max(this.workgroupSize[0] * this.innerElementSize, this.workgroupSize[1]), this.fitAOuter = t10 % this.tileAOuter === 0, this.fitBOuter = o % this.tileBOuter === 0, this.fitInner = n % this.tileInner === 0, this.shaderKey = `conv2DMM_${this.elementsPerThread}_${this.activation}}_${this.fitAOuter}_${this.fitBOuter}_${this.fitInner}_${this.isVec4}_${this.innerElementSize}_${this.isChannelsLast}_${this.sequentialAccessByThreads}`;\n }\n getUserCode() {\n let e = this.isVec4 ? qu(this.elementsPerThread, this.workgroupSize, !this.isChannelsLast, this.tileInner) : ju(this.elementsPerThread, this.workgroupSize, !this.isChannelsLast, this.tileInner, false, null, this.sequentialAccessByThreads), t10 = this.isVec4 ? [this.innerElementSize, 4, 4] : [1, 1, 1];\n return `\n ${loe(this.isChannelsLast, this.fitAOuter, this.fitBOuter, this.fitInner, this.addBias, this.activation, this.hasPreluActivationWeights, t10[0], t10[1], t10[2])}\n ${e}\n `;\n }\n};\nvar jg = class {\n constructor(e, t10 = false, o = null, n = false) {\n this.variableNames = [\"x\", \"W\"], this.uniforms = \"filterDims: vec2, pad: vec2, stride: vec2, dilation: vec2,\", this.workgroupSize = [4, 4, 8], this.outputShape = e.outShape, this.isChannelsLast = e.dataFormat === \"channelsLast\", this.dispatchLayout = this.isChannelsLast ? { x: [2], y: [1], z: [0, 3] } : { x: [3], y: [2], z: [0, 1] }, this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.addBias = t10, this.activation = o, this.hasPreluActivationWeights = n, t10 && this.variableNames.push(\"bias\"), n && this.variableNames.push(\"preluActivationWeights\"), this.shaderKey = `conv2dnaive_${this.activation}_${this.isChannelsLast}`;\n }\n getUserCode() {\n return `\n ${pr(this.activation, this.hasPreluActivationWeights, false, 4)}\n fn readInp(batch : i32, row : i32, col : i32, chan : i32) -> f32{\n let coords = vec4(batch, row, col, chan);\n if (coordsInBounds4D(coords, uniforms.xShape)) {\n return getX(batch, row, col, chan);\n } else {\n return 0.0;\n }\n }\n fn readFilt(row : i32, col : i32, xChannel : i32, outChannel : i32) -> f32{\n let coords = vec4(row, col, xChannel, outChannel);\n if(coordsInBounds4D(coords, uniforms.wShape)) {\n return getW(row, col, xChannel, outChannel);\n } else {\n return 0.0;\n }\n }\n fn writeResult(batch : i32, row : i32, col : i32, chan : i32, valueIn : f32) {\n let coords = ${this.isChannelsLast ? \"vec4(batch, row, col, chan);\" : \"vec4(batch, chan, row, col);\"}\n if (coordsInBounds4D(coords, uniforms.outShape)) {\n var value = valueIn;\n ${Gr(this.addBias, this.activation)}\n setOutputAtCoords(coords.x, coords.y, coords.z, coords.w, value);\n }\n }\n ${Q(\"index\")} {\n let coords = getOutputCoords();\n let batch = coords[0];\n let outChannel = ${this.isChannelsLast ? \"coords[3];\" : \"coords[1];\"}\n let outRow = ${this.isChannelsLast ? \"coords[1];\" : \"coords[2];\"}\n let outCol = ${this.isChannelsLast ? \"coords[2];\" : \"coords[3];\"}\n var acc : f32 = 0.0;\n for (var row = 0; row < uniforms.filterDims[0]; row = row + 1) {\n for (var col = 0; col < uniforms.filterDims[1]; col = col + 1) {\n let xRow = outRow * uniforms.stride[0] + uniforms.dilation[0] * row - uniforms.pad[0];\n let xCol = outCol * uniforms.stride[1] + uniforms.dilation[1] * col - uniforms.pad[1];\n for (var xChannel = 0; xChannel < ${this.isChannelsLast ? \"uniforms.xShape[3];\" : \"uniforms.xShape[1];\"} xChannel = xChannel + 1) {\n ${this.isChannelsLast ? \"let v = readInp(batch, xRow, xCol, xChannel);\" : \"let v = readInp(batch, xChannel, xRow, xCol);\"}\n let f = readFilt(row, col, xChannel, outChannel);\n acc = acc + v * f;\n }\n }\n }\n writeResult(batch, outRow, outCol, outChannel, acc);\n }\n `;\n }\n};\nvar Xg = class {\n constructor(e, t10) {\n this.variableNames = [\"x\"], this.uniforms = `pad : vec2, stride : vec2, dilation : vec2, outWidth : i32, itemsPerBlockRow : i32,\n inChannels : i32,`, this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = e, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.isChannelsLast = t10, this.shaderKey = `im2col_${this.isChannelsLast}`;\n }\n getUserCode() {\n let e = this.isChannelsLast ? 1 : 2, t10 = this.isChannelsLast ? 2 : 3, o = this.isChannelsLast ? \"coords[1]\" : \"coords[2]\", n = this.isChannelsLast ? \"coords[2]\" : \"coords[1]\", s = this.isChannelsLast ? \"getX(batch, xRow, xCol, ch)\" : \"getX(batch, ch, xRow, xCol)\";\n return `\n ${Q(\"index\")} {\n let coords = getCoordsFromIndex(index);\n if(index < uniforms.size) {\n let batch = coords[0];\n let row = ${o};\n let col = ${n};\n let offsetY = (row / uniforms.outWidth) * uniforms.stride[0] - uniforms.pad[0];\n let xRow = offsetY + uniforms.dilation[0] * (col / uniforms.itemsPerBlockRow);\n var value = 0.0;\n if(xRow < uniforms.xShape[${e}] && xRow >= 0) {\n let offsetX = (row % uniforms.outWidth) * uniforms.stride[1] -\n uniforms.pad[1];\n let xCol = offsetX + uniforms.dilation[1] * ((col %\n uniforms.itemsPerBlockRow) / uniforms.inChannels);\n let ch = col % uniforms.inChannels;\n if(xCol < uniforms.xShape[${t10}] && xCol >= 0) {\n value = ${s};\n }\n }\n setOutputAtIndex(index, value);\n }\n }\n `;\n }\n};\nfunction Yg(r, e) {\n let t10 = r.length;\n return t10 >= 3 ? e ? [...r.slice(0, -3), r[t10 - 3] * r[t10 - 2], r[t10 - 1]] : [...r.slice(0, -3), r[t10 - 3], r[t10 - 2] * r[t10 - 1]] : !e && t10 === 1 && r[0] > 1 ? [r[0], 1] : null;\n}\nfunction moe({ x: r, filter: e, convInfo: t10, backend: o, bias: n = null, preluActivationWeights: s = null, leakyreluAlpha: a = 0, activation: i = null }) {\n let p = t10.dataFormat === \"channelsLast\", u = !p, c = false, l = p && t10.filterHeight === t10.inHeight && t10.filterWidth === t10.inWidth && t10.padInfo.type === \"VALID\", m = [], d, f;\n if (l) {\n let x = t10.inHeight * t10.inWidth * t10.inChannels;\n d = me({ inputs: { x: r }, backend: o, attrs: { shape: [1, t10.batchSize, x] } }), f = me({ inputs: { x: e }, backend: o, attrs: { shape: [1, x, t10.outChannels] } });\n } else\n d = me({ inputs: { x: r }, backend: o, attrs: { shape: p ? [t10.batchSize, t10.inHeight * t10.inWidth, t10.inChannels] : [t10.batchSize, t10.inChannels, t10.inHeight * t10.inWidth] } }), f = me({ inputs: { x: e }, backend: o, attrs: { shape: [1, t10.inChannels, t10.outChannels] } });\n if (m.push(d), m.push(f), s != null) {\n let x = Yg(s.shape, p);\n x != null && (s = me({ inputs: { x: s }, backend: o, attrs: { shape: x } }), m.push(s));\n }\n if (n != null) {\n let x = Yg(n.shape, p);\n x != null && (n = me({ inputs: { x: n }, backend: o, attrs: { shape: x } }), m.push(n));\n }\n let h = Xu({ a: p ? d : f, b: p ? f : d, transposeA: u, transposeB: c, backend: o, bias: n, activation: i, preluActivationWeights: s, leakyreluAlpha: a }), g = me({ inputs: { x: h }, backend: o, attrs: { shape: t10.outShape } });\n m.push(h);\n for (let x of m)\n o.disposeData(x.dataId);\n return g;\n}\nfunction doe({ x: r, filter: e, convInfo: t10, backend: o, bias: n = null, preluActivationWeights: s = null, leakyreluAlpha: a = 0, activation: i = null }) {\n let { filterWidth: p, filterHeight: u, inChannels: c, strideWidth: l, strideHeight: m, padInfo: d, outWidth: f, outHeight: h, dilationWidth: g, dilationHeight: x, dataFormat: b } = t10, C = b === \"channelsLast\", w = p * u * c, k = h * f, _ = C ? [t10.batchSize, k, w] : [t10.batchSize, w, k], E = new Xg(_, C), A = [{ type: \"int32\", data: [d.top, d.left] }, { type: \"int32\", data: [m, l] }, { type: \"int32\", data: [x, g] }, { type: \"int32\", data: [f] }, { type: \"int32\", data: [c * p] }, { type: \"int32\", data: [c] }], R = o.runWebGPUProgram(E, [r], r.dtype, A), D = [];\n D.push(R);\n let P = me({ inputs: { x: e }, backend: o, attrs: { shape: [1, w, -1] } });\n if (D.push(P), s != null) {\n let U = Yg(s.shape, C);\n U != null && (s = me({ inputs: { x: s }, backend: o, attrs: { shape: U } }), D.push(s));\n }\n if (n != null) {\n let U = Yg(n.shape, C);\n U != null && (n = me({ inputs: { x: n }, backend: o, attrs: { shape: U } }), D.push(n));\n }\n let V = Xu({ a: C ? R : P, b: C ? P : R, transposeA: !C, transposeB: false, backend: o, bias: n, activation: i, preluActivationWeights: s, leakyreluAlpha: a }), z = me({ inputs: { x: V }, backend: o, attrs: { shape: t10.outShape } });\n D.push(V);\n for (let U of D)\n o.disposeData(U.dataId);\n return z;\n}\nfunction Qg({ x: r, filter: e, convInfo: t10, backend: o, bias: n = null, preluActivationWeights: s = null, leakyreluAlpha: a = 0, activation: i = null }) {\n let p = n != null, u = s != null, c = t10.dataFormat === \"channelsLast\", l = c && t10.filterHeight === t10.inHeight && t10.filterWidth === t10.inWidth && t10.padInfo.type === \"VALID\", m = O().getBool(\"WEBGPU_USE_NAIVE_CONV2D_DEBUG\");\n if (!m && (l || t10.filterHeight === 1 && t10.filterWidth === 1 && t10.dilationHeight === 1 && t10.dilationWidth === 1 && t10.strideHeight === 1 && t10.strideWidth === 1 && (t10.padInfo.type === \"SAME\" || t10.padInfo.type === \"VALID\")))\n return moe({ x: r, filter: e, convInfo: t10, backend: o, bias: n, activation: i, preluActivationWeights: s, leakyreluAlpha: a });\n let d = O().getNumber(\"WEBGPU_THRESHOLD_TO_INCREASE_WORKGROUPS_FOR_MATMUL\"), f = d > 0 ? d : o.thresholdToIncreaseWorkgroups, h = t10.batchSize * Math.ceil(t10.outHeight * t10.outWidth / 32) * Math.ceil(t10.outChannels / 32);\n if (O().getBool(\"WEBGPU_CONV_SEPARATE_IM2COL_SHADER\") || h <= f)\n return doe({ x: r, filter: e, convInfo: t10, backend: o, bias: n, preluActivationWeights: s, leakyreluAlpha: a, activation: i });\n let g, x = [t10.padInfo.top, t10.padInfo.left], b = [{ type: \"int32\", data: [t10.filterHeight, t10.filterWidth] }, { type: \"int32\", data: [...x] }, { type: \"int32\", data: [t10.strideHeight, t10.strideWidth] }, { type: \"int32\", data: [t10.dilationHeight, t10.dilationWidth] }];\n if (m)\n g = new jg(t10, p, i, u);\n else {\n let _ = c ? t10.outHeight * t10.outWidth : t10.outChannels, E = c ? t10.outChannels : t10.outHeight * t10.outWidth, A = t10.filterHeight * t10.filterWidth * t10.inChannels;\n b.push({ type: \"int32\", data: [_] }, { type: \"int32\", data: [E] }, { type: \"int32\", data: [A] });\n let R = o.adapterInfo.isIntel();\n g = new qg(t10, _, E, A, p, i, u, R);\n }\n let C = [], w = [r, e];\n p && (!c && n.shape.length === 1 && (n = me({ inputs: { x: n }, backend: o, attrs: { shape: [n.shape[0], 1, 1] } }), C.push(n)), w.push(n)), u && (!c && s.shape.length === 1 && (s = me({ inputs: { x: s }, backend: o, attrs: { shape: [s.shape[0], 1, 1] } }), C.push(s)), w.push(s)), i === \"leakyrelu\" && (b.push({ type: \"float32\", data: [a] }), g.uniforms += \" alpha : f32,\");\n let k = o.runWebGPUProgram(g, w, r.dtype, b);\n for (let _ of C)\n o.disposeData(_.dataId);\n return k;\n}\nfunction foe(r) {\n let { inputs: e, attrs: t10, backend: o } = r, { x: n, filter: s } = e, { strides: a, pad: i, dataFormat: p, dilations: u, dimRoundingMode: c } = t10, l = S.convertConv2DDataFormat(p), m = S.computeConv2DInfo(n.shape, s.shape, a, u, i, c, false, l);\n return Qg({ x: n, filter: s, convInfo: m, backend: o });\n}\nvar oL = { kernelName: Uo, backendName: \"webgpu\", kernelFunc: foe };\nvar Zg = class {\n constructor(e) {\n this.variableNames = [\"dy\", \"W\"], this.uniforms = \"filterDims : vec2, pads : vec2, stride : vec2, outBackprop : vec4,\", this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = e.inShape, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.isChannelsLast = e.dataFormat === \"channelsLast\", this.shaderKey = `conv2DDerInput_${this.isChannelsLast}`;\n }\n getUserCode() {\n let e = this.isChannelsLast ? 1 : 2, t10 = this.isChannelsLast ? 2 : 3, o = this.isChannelsLast ? 3 : 1;\n return `\n ${Q(\"index\")} {\n if(index < uniforms.size) {\n let coords = getCoordsFromIndex(index);\n let batch = coords[0];\n let d1 = coords[${o}];\n\n let dyCorner = vec2(coords[${e}], coords[${t10}]) - uniforms.pads;\n let dyRCorner = dyCorner.x;\n let dyCCorner = dyCorner.y;\n\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n var dotProd = 0.0;\n for (var wR = 0; wR < uniforms.filterDims.x; wR = wR + 1) {\n let dyR = (f32(dyRCorner) + f32(wR)) / f32(uniforms.stride.x);\n let wRPerm = uniforms.filterDims.x - 1 - wR;\n if (dyR < 0.0 || dyR >= f32(uniforms.outBackprop[1]) || fract(dyR) > 0.0 ||\n wRPerm < 0) {\n continue;\n }\n let idyR = i32(dyR);\n\n for (var wC = 0; wC < uniforms.filterDims.y; wC = wC + 1) {\n let dyC = (f32(dyCCorner) + f32(wC)) / f32(uniforms.stride.y);\n let wCPerm = uniforms.filterDims.y - 1 - wC;\n if (dyC < 0.0 || dyC >= f32(uniforms.outBackprop[2]) ||\n fract(dyC) > 0.0 || wCPerm < 0) {\n continue;\n }\n let idyC = i32(dyC);\n\n for (var d2 = 0; d2 < uniforms.outBackprop[3]; d2 = d2 + 1) {\n if (${this.isChannelsLast}) {\n let xValue = getDy(batch, idyR, idyC, d2);\n let wValue = getW(wRPerm, wCPerm, d1, d2);\n dotProd = dotProd + xValue * wValue;\n } else {\n let xValue = getDy(batch, d2, idyR, idyC);\n let wValue = getW(wRPerm, wCPerm, d1, d2);\n dotProd = dotProd + xValue * wValue;\n }\n\n }\n }\n }\n setOutputAtIndex(index, dotProd);\n }\n }\n `;\n }\n};\nvar Jg = class {\n constructor(e) {\n this.variableNames = [\"x\", \"dy\"], this.uniforms = \"pad : vec2, stride : vec2, batchSize : i32, outHeight : i32, outWidth : i32, inHeight : i32, inWidth : i32,\", this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = e.filterShape, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.isChannelsLast = e.dataFormat === \"channelsLast\", this.shaderKey = `conv2DDerFilter_${this.isChannelsLast}`;\n }\n getUserCode() {\n return `\n ${Q(\"index\")} {\n if(index < uniforms.size) {\n let coords = getCoordsFromIndex(index);\n let wR = coords[0];\n let wC = coords[1];\n let d1 = coords[2];\n let d2 = coords[3];\n\n // Convolve x(?, ?, d1) with dy(:, :, d2) to get dw(wR, wC, d1, d2).\n // ? = to be determined. : = across all values in that axis.\n var dotProd = 0.0;\n for (var b = 0; b < uniforms.batchSize; b = b + 1) {\n for (var yR = 0; yR < uniforms.outHeight; yR = yR + 1) {\n let xR = wR + yR * uniforms.stride[0] - uniforms.pad[0];\n if (xR < 0 || xR >= uniforms.inHeight) {\n continue;\n }\n\n for (var yC = 0; yC < uniforms.outWidth; yC = yC + 1) {\n let xC = wC + yC * uniforms.stride[1] - uniforms.pad[1];\n\n if (xC < 0 || xC >= uniforms.inWidth) {\n continue;\n }\n\n if (${this.isChannelsLast}) {\n let dyValue = getDy(b, yR, yC, d2);\n let xValue = getX(b, xR, xC, d1);\n dotProd = dotProd + xValue * dyValue;\n } else {\n let dyValue = getDy(b, d2, yR, yC);\n let xValue = getX(b, d1, xR, xC);\n dotProd = dotProd + xValue * dyValue;\n }\n }\n }\n }\n setOutputAtIndex(index, dotProd);\n }\n }\n `;\n }\n};\nfunction hoe(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, dy: s } = e, { strides: a, pad: i, dataFormat: p, dimRoundingMode: u, filterShape: c } = o, l = S.convertConv2DDataFormat(p), m = S.computeConv2DInfo(n.shape, c, a, 1, i, u, false, l), d = new Jg(m), f = [{ type: \"int32\", data: [m.padInfo.top, m.padInfo.left] }, { type: \"int32\", data: [m.strideHeight, m.strideWidth] }, { type: \"int32\", data: [m.batchSize] }, { type: \"int32\", data: [m.outHeight] }, { type: \"int32\", data: [m.outWidth] }, { type: \"int32\", data: [m.inHeight] }, { type: \"int32\", data: [m.inWidth] }];\n return t10.runWebGPUProgram(d, [n, s], n.dtype, f);\n}\nvar nL = { kernelName: oi, backendName: \"webgpu\", kernelFunc: hoe };\nfunction goe(r = 4) {\n let e = (s) => {\n switch (s) {\n case 1:\n return \"return W[getIndexFromCoords4D(coord, uniforms.wShape)];\";\n case 4:\n return `\n let coord1 = vec4(coordX, coordY, col + 1, rowInner);\n let coord2 = vec4(coordX, coordY, col + 2, rowInner);\n let coord3 = vec4(coordX, coordY, col + 3, rowInner);\n let v0 = W[getIndexFromCoords4D(coord, uniforms.wShape)];\n let v1 = W[getIndexFromCoords4D(coord1, uniforms.wShape)];\n let v2 = W[getIndexFromCoords4D(coord2, uniforms.wShape)];\n let v3 = W[getIndexFromCoords4D(coord3, uniforms.wShape)];\n return vec4(v0, v1, v2, v3);\n `;\n default:\n throw new Error(`innerElementSize ${s} is not supported.`);\n }\n }, o = `if (row < uniforms.dimAOuter && col < uniforms.dimInner) {\n ${`\n let outRow = row / uniforms.outShape[2];\n let outCol = row % uniforms.outShape[2];\n\n let WRow = col / (uniforms.filterDims[1] * uniforms.outBackprop[3]);\n let WCol = col / uniforms.outBackprop[3] % uniforms.filterDims[1];\n let xR = f32(outRow - uniforms.pads[0] + WRow) / f32(uniforms.stride[0]);\n let xC = f32(outCol - uniforms.pads[1] + WCol) / f32(uniforms.stride[1]);\n if (xR < 0.0 || xR >= f32(uniforms.outBackprop[1]) || fract(xR) > 0.0) {\n return ${kt(r)}(0.0);\n }\n if (xC < 0.0 || xC >= f32(uniforms.outBackprop[2]) || fract(xC) > 0.0) {\n return ${kt(r)}(0.0);\n }\n let coord = vec4(\n batch,\n i32(xR),\n i32(xC),\n col % uniforms.outBackprop[3]);\n return x[getIndexFromCoords4D(coord, uniforms.xShape)/${r}];`}\n }\n return ${kt(r)}(0.0);`;\n return `\n fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${kt(r)} {\n let col = colIn * ${r};\n ${o}\n }\n\n fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${kt(r)} {\n let col = colIn * ${r};\n let coordX = uniforms.filterDims.x - 1 -\n row / (uniforms.filterDims[1] * uniforms.outBackprop[3]);\n let coordY = uniforms.filterDims.y - 1 -\n (row / uniforms.outBackprop[3]) % uniforms.filterDims[1];\n if (row < uniforms.dimInner && col < uniforms.dimBOuter &&\n coordX >= 0 && coordY >= 0) {\n let rowInner = row % uniforms.outBackprop[3];\n let coord = vec4(coordX, coordY, col, rowInner);\n ${e(r)}\n }\n return ${kt(r)}(0.0);\n }\n\n fn mm_write(batch: i32, row : i32, colIn : i32, valueInput : ${kt(r)}) {\n let col = colIn * ${r};\n if (row < uniforms.dimAOuter && (col + ${r - 1}) < uniforms.dimBOuter) {\n var value = valueInput;\n let outCoord = vec4(\n batch,\n row / uniforms.outShape[2],\n row % uniforms.outShape[2],\n col);\n result[getIndexFromCoords4D(outCoord, uniforms.outShape)/${r}] = value;\n }\n }`;\n}\nvar ex = class {\n constructor(e) {\n this.variableNames = [\"x\", \"W\"], this.uniforms = \"filterDims : vec2, pads : vec2, stride : vec2, outBackprop : vec4, dimAOuter : i32, dimBOuter : i32, dimInner : i32,\", this.outputShape = e.inShape, y.assert(e.dataFormat === \"channelsLast\", () => \"TODO: NCHW is unimplemented\"), this.isVec4 = e.inChannels % 4 === 0 && e.outChannels % 4 === 0, this.dispatchLayout = { x: [3], y: [1, 2], z: [0] }, this.workgroupSize = Bl(this.dispatchLayout, this.outputShape, this.isVec4), this.elementsPerThread = Vl(this.dispatchLayout, this.outputShape, this.isVec4), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize, this.elementsPerThread), this.isVec4 && (this.variableTypes = [\"vec4\", \"f32\"]), this.shaderKey = `conv2DDerInputMM_${this.isVec4}_${this.elementsPerThread}`;\n }\n getUserCode() {\n let e = this.isVec4 ? qu(this.elementsPerThread, this.workgroupSize) : ju(this.elementsPerThread, this.workgroupSize);\n return `\n ${goe(this.isVec4 ? 4 : 1)}\n ${e}\n `;\n }\n};\nfunction xoe(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { dy: n, filter: s } = e, { inputShape: a, strides: i, pad: p, dataFormat: u, dimRoundingMode: c } = o, l = S.convertConv2DDataFormat(u), m = S.computeConv2DInfo(a, s.shape, i, 1, p, c, false, l), d = [{ type: \"int32\", data: [m.filterHeight, m.filterWidth] }, { type: \"int32\", data: [m.filterHeight - 1 - m.padInfo.top, m.filterWidth - 1 - m.padInfo.left] }, { type: \"int32\", data: [m.strideHeight, m.strideWidth] }, { type: \"int32\", data: [m.batchSize, m.outHeight, m.outWidth, m.outChannels] }], f;\n if (O().getBool(\"WEBGPU_USE_NAIVE_CONV2D_TRANSPOSE\") || m.filterHeight <= 2 && m.filterWidth <= 2 && m.outChannels <= 16 && m.inChannels === 1)\n f = new Zg(m);\n else {\n f = new ex(m);\n let h = m.inHeight * m.inWidth, g = m.inChannels, x = m.filterHeight * m.filterWidth * m.outChannels;\n d.push({ type: \"uint32\", data: [h] }, { type: \"uint32\", data: [g] }, { type: \"uint32\", data: [x] });\n }\n return t10.runWebGPUProgram(f, [n, s], \"float32\", d);\n}\nvar sL = { kernelName: Go, backendName: \"webgpu\", kernelFunc: xoe };\nvar yoe = xe({ opType: X.COS });\nvar aL = { kernelName: Ho, backendName: \"webgpu\", kernelFunc: yoe };\nvar boe = xe({ opType: X.COSH });\nvar iL = { kernelName: Ko, backendName: \"webgpu\", kernelFunc: boe };\nvar tx = class {\n constructor(e, t10, o, n) {\n this.variableNames = [\"Image\", \"Boxes\", \"BoxInd\"], this.uniforms = \"extrapolationValue : f32,\", this.workgroupSize = [64, 1, 1], this.size = true;\n let [s] = t10;\n this.outputShape = [s, o[0], o[1], e], this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.methodId = n === \"bilinear\" ? 1 : 0, this.cropHeightBiggerThan1 = this.outputShape[1] > 1, this.cropWidthBiggerThan1 = this.outputShape[2] > 1, this.shaderKey = `cropAndResize_${this.methodId}_${this.cropHeightBiggerThan1}_${this.cropWidthBiggerThan1}`;\n }\n getUserCode() {\n let [e, t10] = [\"f32(uniforms.imageShape[1] - 1)\", \"f32(uniforms.imageShape[2] - 1)\"], [o, n, s] = this.cropHeightBiggerThan1 ? [`(${e} / f32(uniforms.outShape[1] - 1))`, \"(y2-y1) * height_ratio\", `y1*${e} + f32(y)*(height_scale)`] : [\"0.0\", \"0.0\", `0.5 * (y1+y2) * ${e}`], [a, i, p] = this.cropWidthBiggerThan1 ? [`(${t10} / f32(uniforms.outShape[2] - 1))`, \"(x2-x1) * width_ratio\", `x1*${t10} + f32(x)*(width_scale)`] : [\"0.0\", \"0.0\", `0.5 * (x1+x2) * ${t10}`];\n return `\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let coords = getCoordsFromIndex(index);\n let height_ratio = f32(${o});\n let width_ratio = f32(${a});\n let b = coords[0];\n let y = coords[1];\n let x = coords[2];\n let d = coords[3];\n // get box vals\n let y1 = getBoxes(b, 0);\n let x1 = getBoxes(b, 1);\n let y2 = getBoxes(b, 2);\n let x2 = getBoxes(b, 3);\n // get image in batch index\n let bInd = i32(round(getBoxInd(b)));\n if(bInd < 0 || bInd >= uniforms.outShape[0]) {\n return;\n }\n let height_scale = ${n};\n let width_scale = ${i};\n let in_y = ${s};\n if( in_y < 0.0 || in_y > ${e} ) {\n setOutputAtIndex(index, uniforms.extrapolationValue);\n return;\n }\n let in_x = ${p};\n if( in_x < 0.0 || in_x > ${t10} ) {\n setOutputAtIndex(index, uniforms.extrapolationValue);\n return;\n }\n let sourceFracIndexCR = vec2(in_x,in_y);\n if(${this.methodId} == 1) {\n // Compute the four integer indices.\n let sourceFloorCR = vec2(sourceFracIndexCR);\n let sourceCeilCR = vec2(ceil(sourceFracIndexCR));\n let topLeft = getImage(bInd, sourceFloorCR.y, sourceFloorCR.x, d);\n let bottomLeft = getImage(bInd, sourceCeilCR.y, sourceFloorCR.x, d);\n let topRight = getImage(bInd, sourceFloorCR.y, sourceCeilCR.x, d);\n let bottomRight = getImage(bInd, sourceCeilCR.y, sourceCeilCR.x, d);\n let fracCR = sourceFracIndexCR - vec2(sourceFloorCR);\n let top = topLeft + (topRight - topLeft) * fracCR.x;\n let bottom = bottomLeft + (bottomRight - bottomLeft) * fracCR.x;\n let newValue = top + (bottom - top) * fracCR.y;\n setOutputAtIndex(index, newValue);\n } else {\n // Compute the coordinators of nearest neighbor point.\n let sourceNearestCR = vec2(floor(\n sourceFracIndexCR + vec2(0.5,0.5)));\n let newValue = getImage(\n bInd, sourceNearestCR.y, sourceNearestCR.x, d);\n setOutputAtIndex(index, newValue);\n }\n }\n }\n `;\n }\n};\nvar Coe = (r) => {\n let { inputs: e, backend: t10, attrs: o } = r, { image: n, boxes: s, boxInd: a } = e, { cropSize: i, method: p, extrapolationValue: u } = o, c = new tx(n.shape[3], s.shape, i, p), l = [{ type: \"float32\", data: [u] }];\n return t10.runWebGPUProgram(c, [n, s, a], \"float32\", l);\n};\nvar uL = { kernelName: Xo, backendName: \"webgpu\", kernelFunc: Coe };\nvar Zu;\n(function(r) {\n r.Prod = \"*\", r.Sum = \"+\";\n})(Zu || (Zu = {}));\nvar Kl = class {\n constructor(e, t10, o, n) {\n this.variableNames = [\"x\"], this.uniforms = \"index : f32,\", this.size = true, this.workgroupSize = [128, 1, 1], this.outputShape = t10, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.exclusive = o, this.reverse = n, this.op = e, this.shaderKey = `cum_${this.op}_${this.exclusive}_${this.reverse}`;\n }\n getUserCode() {\n let e = this.outputShape.length, t10 = this.op === Zu.Prod ? \"1.0\" : \"0.0\", o = this.exclusive ? t10 : `getX(${pL(e, \"coords\", this.op)})`, n = this.outputShape[this.outputShape.length - 1], s = \"\", a = \"\";\n return this.exclusive ? (s = this.reverse ? `end != ${n - 1}` : \"end != 0\", a = this.reverse ? \"end + 1\" : \"end - 1\") : (s = this.reverse ? `end + pow2 < ${n}` : \"end >= pow2\", a = this.reverse ? \"end + pow2\" : \"end - pow2\"), `\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n var coords = getCoordsFromIndex(index);\n\n let end = ${cL(e, \"coords\", this.op)};\n var val = ${o};\n let pow2 = i32(pow(2.0, uniforms.index));\n if (${s}) {\n let idx = ${a};\n ${cL(e, \"coords\", this.op)} = idx;\n val ${this.op}= getX(${pL(e, \"coords\", this.op)});\n }\n setOutputAtIndex(index, val);\n }\n }\n `;\n }\n};\nfunction pL(r, e, t10) {\n if (r === 1)\n return `${e}`;\n if (r === 2)\n return `${e}.x, ${e}.y`;\n if (r === 3)\n return `${e}.x, ${e}.y, ${e}.z`;\n if (r === 4)\n return `${e}.x, ${e}.y, ${e}.z, ${e}.w`;\n throw Error(`Cumulative ${t10} for rank ${r} is not yet supported`);\n}\nfunction cL(r, e, t10) {\n if (r === 1)\n return `${e}`;\n if (r === 2)\n return `${e}.y`;\n if (r === 3)\n return `${e}.z`;\n if (r === 4)\n return `${e}.w`;\n throw Error(`Cumulative ${t10} for rank ${r} is not yet supported`);\n}\nfunction rx(r, e, t10, o, n, s) {\n let a = e.shape.length, i = S.getAxesPermutation([o], a), p = e;\n i != null && (p = Nr({ inputs: { x: e }, backend: t10, attrs: { perm: i } }));\n let u = S.getInnerMostAxes(1, a)[0];\n if (u !== a - 1)\n throw new Error(`WebGPU cumprod shader expects an inner-most axis=${e.shape.length - 1} but got axis=${o}`);\n let c = p.shape[u], l = Dt({ inputs: { x: p }, backend: t10 });\n for (let m = 0; m <= Math.ceil(Math.log2(c)) - 1; m++) {\n let d = new Kl(r, p.shape, false, s), f = l, h = [{ type: \"float32\", data: [m] }];\n l = t10.runWebGPUProgram(d, [l], l.dtype, h), t10.disposeData(f.dataId);\n }\n if (n) {\n let m = new Kl(r, p.shape, n, s), d = l, f = [{ type: \"float32\", data: [0] }];\n l = t10.runWebGPUProgram(m, [l], l.dtype, f), t10.disposeData(d.dataId);\n }\n if (i != null) {\n let m = S.getUndoAxesPermutation(i), d = Nr({ inputs: { x: l }, backend: t10, attrs: { perm: m } });\n return t10.disposeData(l.dataId), t10.disposeData(p.dataId), d;\n }\n return l;\n}\nfunction Soe(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s, exclusive: a, reverse: i } = o;\n return rx(Zu.Prod, n, t10, s, a, i);\n}\nvar lL = { kernelName: qo, backendName: \"webgpu\", kernelFunc: Soe };\nfunction woe(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s, exclusive: a, reverse: i } = o;\n return rx(Zu.Sum, n, t10, s, a, i);\n}\nvar mL = { kernelName: jo, backendName: \"webgpu\", kernelFunc: woe };\nfunction Ioe(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, weights: s } = e, { size: a, binaryOutput: i } = o, p = n.shape.length === 1, c = y.sizeFromShape(s.shape) > 0, l = s.dtype, m = p ? [n.shape[0]] : [n.shape[0], n.shape[1]], d = p ? [a] : [n.shape[0], a], f = fr({ backend: t10, attrs: { shape: d, value: 0, dtype: l } }), h = new Tc(m, c, i), g = [{ type: \"int32\", data: [a] }], x = c ? [n, s] : [n];\n return t10.runWebGPUProgram(h, x, l, g, f);\n}\nvar dL = { kernelName: ni, backendName: \"webgpu\", kernelFunc: Ioe };\nvar ox = class {\n constructor(e, t10) {\n this.variableNames = [\"x\"], this.workgroupSize = [64, 1, 1], this.size = true, this.uniforms = \"blockSize : i32,\", this.outputShape = e, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.shaderKey = `depthToSpace_${t10}`, this.dataFormat = t10;\n }\n getUserCode() {\n return `\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let coords = getCoordsFromIndex(index);\n let b = coords[0];\n let h = ${this.getHeightCoordString()};\n let w = ${this.getWidthCoordString()};\n let d = ${this.getDepthCoordString()};\n\n let in_h = h / uniforms.blockSize;\n let offset_h = h % uniforms.blockSize;\n let in_w = w / uniforms.blockSize;\n let offset_w = w % uniforms.blockSize;\n let offset_d = (offset_h * uniforms.blockSize + offset_w) *\n ${this.getOutputDepthSize()};\n let in_d = d + offset_d;\n\n let rlt = ${this.getInputSamplingString()};\n setOutputAtIndex(index, rlt);\n }\n }`;\n }\n getHeightCoordString() {\n return this.dataFormat === \"NHWC\" ? \"coords[1]\" : \"coords[2]\";\n }\n getWidthCoordString() {\n return this.dataFormat === \"NHWC\" ? \"coords[2]\" : \"coords[3]\";\n }\n getDepthCoordString() {\n return this.dataFormat === \"NHWC\" ? \"coords[3]\" : \"coords[1]\";\n }\n getOutputDepthSize() {\n return this.dataFormat === \"NHWC\" ? \"uniforms.outShape[3]\" : \"uniforms.outShape[1]\";\n }\n getInputSamplingString() {\n return this.dataFormat === \"NHWC\" ? \"getX(b, in_h, in_w, in_d)\" : \"getX(b, in_d, in_h, in_w)\";\n }\n};\nfunction voe(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { blockSize: s, dataFormat: a } = o, i = n.shape[0], p = a === \"NHWC\" ? n.shape[1] : n.shape[2], u = a === \"NHWC\" ? n.shape[2] : n.shape[3], c = a === \"NHWC\" ? n.shape[3] : n.shape[1], l = p * s, m = u * s, d = c / (s * s), f = a === \"NHWC\" ? [i, l, m, d] : [i, d, l, m], h = [{ type: \"int32\", data: [s] }], g = new ox(f, a);\n return t10.runWebGPUProgram(g, [n], n.dtype, h);\n}\nvar fL = { kernelName: Yo, backendName: \"webgpu\", kernelFunc: voe };\nvar nx = class {\n constructor(e, t10, o, n = false, s = null, a = false) {\n this.variableNames = [\"x\", \"W\"], this.uniforms = \"pad : vec2, inDims : vec2,\", this.workgroupSize = [16, 16, 1], this.outputShape = e, this.dispatchLayout = { x: [3], y: [2], z: [0, 1] }, this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), n && this.variableNames.push(\"bias\"), a && this.variableNames.push(\"preluActivationWeights\"), this.addBias = n, this.activation = s, this.hasPreluActivation = a, this.filterHeight = t10, this.filterWidth = o, this.shaderKey = `depthwiseNCHW_${this.activation}_${this.filterHeight}_${this.filterWidth}`;\n }\n getUserCode() {\n let e = this.filterWidth * this.filterHeight, t10 = this.workgroupSize[0] * this.workgroupSize[1] * this.workgroupSize[2], o = this.workgroupSize[1] + this.filterHeight - 1, n = this.workgroupSize[0] + this.filterWidth - 1;\n return `\n ${pr(this.activation, this.hasPreluActivation, false, 4)}\n\n var mm_Asub : array, ${o}>;\n var mm_Bsub : array, ${this.filterHeight}>;\n fn readX(batch : i32, channel : i32, row : i32, col : i32) -> f32 {\n var value = 0.0;\n if (row >=0 && row < uniforms.inDims[0] && col >=0 && col < uniforms.inDims[1])\n {\n value = getX(batch, channel, row, col);\n }\n return value;\n }\n\n ${Q()} {\n let coords = getOutputCoords();\n let batch = coords[0];\n let xRCCorner = vec2(coords.zw) - uniforms.pad;\n let channelMul = uniforms.wShape[3];\n let d1 = coords[1] / channelMul;\n let q = coords[1] % channelMul;\n\n let inputRowStart = xRCCorner.x;\n let inputColStart = xRCCorner.y;\n\n let localRow = i32(localId.y);\n let localCol = i32(localId.x);\n\n // Load one tile of X into local memory.\n for (var inputRow = localRow; inputRow < ${o}; inputRow = inputRow + ${this.workgroupSize[1]}) {\n for (var inputCol = localCol; inputCol < ${n}; inputCol = inputCol + ${this.workgroupSize[0]}) {\n let rowOffset = inputRow - localRow;\n let colOffset = inputCol - localCol;\n mm_Asub[inputRow][inputCol] = readX(batch, d1, inputRowStart + rowOffset, inputColStart + colOffset);\n }\n }\n\n // Load one tile of W into local memory.\n var wIndex = i32(localIndex);\n ${e < t10 ? `if (wIndex < ${e})` : `for(; wIndex < ${e}; wIndex = wIndex + ${t10})`}\n\n {\n let wRow = wIndex / ${this.filterWidth};\n let wCol = wIndex % ${this.filterWidth};\n mm_Bsub[wRow][wCol] = getW(wRow, wCol, d1, q);\n }\n\n workgroupBarrier();\n\n var value = 0.0;\n for (var wR = 0; wR < ${this.filterHeight}; wR = wR + 1) {\n for (var wC = 0; wC < ${this.filterWidth}; wC = wC + 1) {\n let xVal = mm_Asub[localRow + wR][localCol + wC];\n let wVal = mm_Bsub[wR][wC];\n value = fma(xVal, wVal, value);\n }\n }\n ${Gr(this.addBias, this.activation)}\n if (coordsInBounds4D(coords, uniforms.outShape)) {\n setOutputAtCoords(coords[0], coords[1], coords[2], coords[3], value);\n }\n }\n `;\n }\n};\nvar $c = class {\n constructor(e, t10 = false, o = null, n = false) {\n this.variableNames = [\"x\", \"W\"], this.uniforms = \"pad : vec2, inDims : vec2,\", this.workgroupSize = [4, 4, 4], this.workPerThread = 4, this.isVec4 = true, this.outputShape = e.outShape, this.dispatchLayout = { x: [3], y: [2], z: [0, 1] }, this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize, [4, this.workPerThread, 1]), y.assert(e.dataFormat === \"channelsLast\", () => \"TODO: NCHW is unimplemented\"), t10 && this.variableNames.push(\"bias\"), n && this.variableNames.push(\"preluActivationWeights\"), this.convInfo = e, this.addBias = t10, this.activation = o, this.hasPreluActivation = n, this.shaderKey = `depthwiseVec4_${o}_${this.convInfo.filterHeight}_${this.convInfo.filterWidth}_${this.convInfo.strideHeight}_${this.convInfo.strideWidth}_${this.workPerThread}`;\n }\n getUserCode() {\n let e = (this.workPerThread - 1) * this.convInfo.strideWidth + this.convInfo.filterWidth, t10 = this.convInfo.strideHeight, o = this.convInfo.strideWidth;\n return `\n ${pr(this.activation, this.hasPreluActivation, true, 4)}\n fn readX(batch : i32, row : i32, col : i32, channel : i32) -> vec4 {\n var value = vec4(0.0);\n if (col >=0 && col < uniforms.inDims[1]) {\n value = getX(batch, row, col, channel);\n }\n return value;\n }\n\n ${Q()} {\n let batch = i32(globalId.z) / uniforms.outShape[1];\n let r = i32(globalId.z) % uniforms.outShape[1];\n let c = i32(globalId.y) * ${this.workPerThread};\n let d1 = i32(globalId.x) * 4;\n let xRCCorner = vec2(r, c) * vec2(${t10}, ${o}) - uniforms.pad;\n\n let xRCorner = xRCCorner.x;\n let xCCorner = xRCCorner.y;\n var xVals : array, ${e}>;\n var dotProd : array, ${this.workPerThread}>;\n for (var i = 0; i < ${this.workPerThread}; i++) {\n dotProd[i] = vec4(0.0);\n }\n\n // Use constant instead of uniform can give better performance.\n for (var wR = 0; wR < ${this.convInfo.filterHeight}; wR = wR + 1) {\n let xR = xRCorner + wR;\n if (xR >=0 && xR < uniforms.inDims[0]) {\n for (var i = 0; i < ${e}; i++) {\n xVals[i] = readX(batch, xR, xCCorner + i, d1);\n }\n for (var wC = 0; wC < ${this.convInfo.filterWidth}; wC = wC + 1) {\n let wValue = getW(wR, wC, d1, 0);\n for (var i = 0; i < ${this.workPerThread}; i++) {\n dotProd[i] = fma(xVals[i * ${o} + wC], wValue, dotProd[i]);\n }\n }\n }\n }\n\n for (var i = 0; i < ${this.workPerThread}; i = i + 1) {\n let coords = vec4(batch, r, c + i, d1);\n if (coordsInBounds4D(coords, uniforms.outShape)) {\n var value = dotProd[i];\n ${Gr(this.addBias, this.activation)}\n setOutputAtCoords(coords[0], coords[1], coords[2], coords[3], value);\n }\n }\n }\n `;\n }\n};\nvar Ec = class {\n constructor(e, t10 = false, o = null, n = false) {\n this.variableNames = [\"x\", \"W\"], this.uniforms = `pad : vec2, inDims : vec2, filterHeight : i32,\n filterWidth : i32, stride : vec2, dilation : vec2,`, this.workgroupSize = [256, 1, 1], this.size = true, this.outputShape = e.outShape, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.isChannelsLast = e.dataFormat === \"channelsLast\", t10 && this.variableNames.push(\"bias\"), n && this.variableNames.push(\"preluActivationWeights\"), this.convInfo = e, this.addBias = t10, this.activation = o, this.hasPreluActivation = n, this.shaderKey = `depthwise_${this.activation}_${this.isChannelsLast}`;\n }\n getUserCode() {\n let e = this.isChannelsLast ? \"getX(batch, xR, xC, d1);\" : \"getX(batch, d1, xR, xC);\";\n return `\n ${pr(this.activation, this.hasPreluActivation, false, 4)}\n\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let coords = getOutputCoords();\n let batch = coords[0];\n let xRCCorner = vec2(coords.${this.isChannelsLast ? \"yz\" : \"zw\"}) * uniforms.stride - uniforms.pad;\n let d2 = coords[${this.isChannelsLast ? 3 : 1}];\n let channelMul = uniforms.wShape[3];\n let d1 = d2 / channelMul;\n let q = d2 % channelMul;\n\n let inputRowStart = xRCCorner.x;\n let inputColStart = xRCCorner.y;\n let inputRowEnd = inputRowStart + uniforms.filterHeight *\n uniforms.dilation[0];\n let inputColEnd = inputColStart + uniforms.filterWidth *\n uniforms.dilation[1];\n\n // Convolve x(?, ?, d1)|x(d1, ?, ?) with w(:, :, d1, q) to get\n // y(yR, yC, d2)|y(d2, yR, yC). ? = to be determined. : = across all\n // values in that axis. x(?, ?, d1) and y(yR, yC, d2) is for NHWC.\n // x(d1, ?, ?) and y(d2, yR, yC) is for NCHW.\n var value = 0.0;\n\n // Extract if checking out of for loop for performance.\n if (inputRowStart >= 0 && inputColStart >= 0 &&\n inputRowEnd < uniforms.inDims[0] &&\n inputColEnd < uniforms.inDims[1]) {\n for (var wR = 0; wR < uniforms.filterHeight; wR = wR + 1) {\n let xR = inputRowStart + wR * uniforms.dilation[0];\n\n for (var wC = 0; wC < uniforms.filterWidth; wC = wC + 1) {\n let xC = inputColStart + wC * uniforms.dilation[1];\n\n let xVal = ${e};\n let wVal = getW(wR, wC, d1, q);\n value = value + xVal * wVal;\n }\n }\n } else {\n for (var wR = 0; wR < uniforms.filterHeight; wR = wR + 1) {\n let xR = inputRowStart + wR * uniforms.dilation[0];\n\n if (xR < 0 || xR >= uniforms.inDims[0]) {\n continue;\n }\n\n for (var wC = 0; wC < uniforms.filterWidth; wC = wC + 1) {\n let xC = inputColStart + wC * uniforms.dilation[1];\n\n if (xC < 0 || xC >= uniforms.inDims[1]) {\n continue;\n }\n\n let xVal = ${e};\n let wVal = getW(wR, wC, d1, q);\n value = value + xVal * wVal;\n }\n }\n }\n ${Gr(this.addBias, this.activation)}\n setOutputAtCoords(coords[0], coords[1], coords[2], coords[3], value);\n }\n }\n `;\n }\n};\nfunction koe(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, filter: s } = e, { strides: a, pad: i, dataFormat: p, dilations: u, dimRoundingMode: c } = o, l = S.convertConv2DDataFormat(p), m = u;\n m == null && (m = [1, 1]);\n let d = S.computeConv2DInfo(n.shape, s.shape, a, m, i, c, true, l), f = [{ type: \"int32\", data: [d.padInfo.top, d.padInfo.left] }, { type: \"int32\", data: [d.inHeight, d.inWidth] }], h = d.dataFormat === \"channelsLast\", g;\n return !h && d.inHeight > 16 && d.inWidth > 16 && d.strideHeight === 1 && d.strideWidth === 1 && d.dilationWidth === 1 && d.dilationHeight === 1 && d.inChannels === d.outChannels ? g = new nx(d.outShape, d.filterHeight, d.filterWidth) : h && d.outHeight > 4 && d.outWidth > 4 && d.strideWidth <= 2 && d.inChannels === d.outChannels && d.dilationHeight === 1 && d.dilationWidth === 1 && d.inChannels % 4 === 0 ? g = new $c(d) : (g = new Ec(d), f.push({ type: \"int32\", data: [d.filterHeight] }, { type: \"int32\", data: [d.filterWidth] }, { type: \"int32\", data: [d.strideHeight, d.strideWidth] }, { type: \"int32\", data: [d.dilationHeight, d.dilationWidth] })), t10.runWebGPUProgram(g, [n, s], n.dtype, f);\n}\nvar hL = { kernelName: Qo, backendName: \"webgpu\", kernelFunc: koe };\nvar sx = class {\n constructor(e) {\n this.variableNames = [\"x\"], this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = [e, e], this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.shaderKey = \"diag\";\n }\n getUserCode() {\n return `\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let coords = getOutputCoords();\n let value = select(0.0, getX(coords[0]), coords[0] == coords[1]);\n setOutputAtIndex(index, value);\n }\n }\n `;\n }\n};\nfunction Noe(r) {\n let { inputs: e, backend: t10 } = r, { x: o } = e, n = [...o.shape, ...o.shape], s = y.sizeFromShape(o.shape), a = me({ inputs: { x: o }, backend: t10, attrs: { shape: [s] } }), i = new sx(s), p = t10.runWebGPUProgram(i, [a], a.dtype), u = me({ inputs: { x: p }, backend: t10, attrs: { shape: n } });\n return t10.disposeData(a.dataId), t10.disposeData(p.dataId), u;\n}\nvar gL = { kernelName: si, backendName: \"webgpu\", kernelFunc: Noe };\nvar ax = class {\n constructor(e) {\n this.variableNames = [\"x\", \"w\"], this.uniforms = \"filterDims: vec2, pad: vec2, stride: vec2, dilation: vec2\", this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = e.outShape, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.shaderKey = \"dilation2d\";\n }\n getUserCode() {\n return `\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let neg_infinity = -3.4e38;\n let coords = getOutputCoords();\n let batch = coords.x;\n let d1 = coords.w;\n let outTopLeftCorner = coords.yz * uniforms.stride - uniforms.pad;\n let hBeg = outTopLeftCorner.x;\n let wBeg = outTopLeftCorner.y;\n\n var curVal = neg_infinity;\n for (var h = 0; h < uniforms.filterDims[0]; h = h + 1) {\n let hIn = hBeg + h * uniforms.dilation[0];\n\n if (hIn >= 0 && hIn < uniforms.xShape[1]) {\n for (var w = 0; w < uniforms.filterDims[1]; w = w + 1) {\n let wIn = wBeg + w * uniforms.dilation[1];\n\n if (wIn >= 0 && wIn < uniforms.xShape[2]) {\n let val = getX(batch, hIn, wIn, d1) + getW(h, w, d1);\n if (val > curVal) {\n curVal = val;\n }\n }\n }\n }\n }\n\n setOutputAtIndex(index, curVal);\n }\n }\n `;\n }\n};\nfunction Toe(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, filter: s } = e, { strides: a, pad: i, dilations: p } = o, u = S.computeDilation2DInfo(n.shape, s.shape, a, i, \"NHWC\", p), c = [u.padInfo.top, u.padInfo.left], l = [{ type: \"int32\", data: [u.filterHeight, u.filterWidth] }, { type: \"int32\", data: [...c] }, { type: \"int32\", data: [u.strideHeight, u.strideWidth] }, { type: \"int32\", data: [u.dilationHeight, u.dilationWidth] }], m = new ax(u);\n return t10.runWebGPUProgram(m, [n, s], n.dtype, l);\n}\nvar xL = { kernelName: ai, backendName: \"webgpu\", kernelFunc: Toe };\nvar II = Ze({ opType: ge.MUL, cpuKernelImpl: lM, supportsComplex: true });\nvar yL = { kernelName: kn, backendName: \"webgpu\", kernelFunc: II };\nfunction ql(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s, keepDims: a } = o;\n return Kr(n, s, a, \"sum\", t10);\n}\nvar bL = { kernelName: Kn, backendName: \"webgpu\", kernelFunc: ql };\nfunction _oe(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { equation: n } = o, s = e, { allDims: a, summedDims: i, idDims: p } = S.decodeEinsumEquation(n, s.length);\n S.checkEinsumDimSizes(a.length, p, s);\n let { path: u, steps: c } = S.getEinsumComputePath(i, p), l = c.length, m = null, d = a.length, f = [];\n for (let h = 0; h < l; ++h) {\n for (let g of c[h]) {\n let { permutationIndices: x, expandDims: b } = S.getEinsumPermutation(d, p[g]), C;\n S.isIdentityPermutation(x) ? C = s[g] : (C = Nr({ inputs: { x: s[g] }, backend: t10, attrs: { perm: x } }), f.push(C));\n let w = C.shape.slice();\n for (let k = 0; k < b.length; ++k)\n w.splice(b[k], 0, 1);\n y.arraysEqual(C.shape, w) || (C = me({ inputs: { x: C }, backend: t10, attrs: { shape: w } }), f.push(C)), m === null ? m = C : (m = II({ inputs: { a: C, b: m }, backend: t10 }), f.push(m));\n }\n h < l - 1 && (u[h] >= 0 && (m = ql({ inputs: { x: m }, backend: t10, attrs: { axis: u[h] - (a.length - d), keepDims: false } }), f.push(m)), d--);\n }\n for (let h of f)\n h !== m && t10.disposeData(h.dataId);\n return m;\n}\nvar CL = { kernelName: ii, backendName: \"webgpu\", kernelFunc: _oe };\nvar $oe = xe({ opType: X.ELU });\nvar SL = { kernelName: Jo, backendName: \"webgpu\", kernelFunc: $oe };\nvar Eoe = Ze({ opType: ge.EQUAL, dtype: \"bool\", cpuKernelImpl: Q3 });\nvar wL = { kernelName: en, backendName: \"webgpu\", kernelFunc: Eoe };\nvar Aoe = xe({ opType: X.ERF });\nvar IL = { kernelName: da, backendName: \"webgpu\", kernelFunc: Aoe };\nvar vI = xe({ opType: X.EXP, cpuKernelImpl: Z3, dtype: \"float32\" });\nvar vL = { kernelName: tn, backendName: \"webgpu\", kernelFunc: vI };\nfunction ix(r) {\n let { inputs: e, attrs: t10, backend: o } = r, { dim: n } = t10, { input: s } = e, a = s.shape.length, i = s.shape.slice(), p = n;\n return n < 0 && (y.assert(-(a + 1) <= n, () => `Axis must be in the interval [${-(a + 1)}, ${a}]`), p = a + n + 1), i.splice(p, 0, 1), me({ inputs: { x: s }, backend: o, attrs: { shape: i } });\n}\nvar kL = { kernelName: Ss, backendName: \"webgpu\", kernelFunc: ix };\nvar Roe = xe({ opType: X.EXPM1, cpuKernelImpl: J3 });\nvar NL = { kernelName: fa, backendName: \"webgpu\", kernelFunc: Roe };\nvar jl = class {\n constructor(e, t10) {\n this.variableNames = [\"real\", \"imag\"], this.outputShape = [], this.uniforms = \"exponentMultiplier : f32, denominator: f32,\", this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = t10, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.component = e, this.shaderKey = `fft_${e}`;\n }\n getUserCode() {\n return `\n fn unaryOpComplex(real: f32, expR: f32, imag: f32, expI: f32) -> f32 {\n ${this.component === \"real\" ? \"return real * expR - imag * expI;\" : \"return real * expI + imag * expR;\"}\n }\n\n fn mulMatDFT(batch: i32, index: i32) -> f32 {\n let indexRatio = f32(index) / f32(uniforms.realShape[1]);\n let exponentMultiplierTimesIndexRatio =\n uniforms.exponentMultiplier * indexRatio;\n\n var result = 0.0;\n\n for (var i = 0; i < uniforms.realShape[1]; i = i + 1) {\n // x = (-2|2 * PI / N) * index * i;\n let x = exponentMultiplierTimesIndexRatio * f32(i);\n let expR = cos(x);\n let expI = sin(x);\n let real = getReal(batch, i);\n let imag = getImag(batch, i);\n\n result = result +\n unaryOpComplex(real, expR, imag, expI) / uniforms.denominator;\n }\n\n return result;\n }\n\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let coords = getOutputCoords();\n setOutputAtIndex(index, mulMatDFT(coords[0], coords[1]));\n }\n }\n `;\n }\n};\nfunction ux(r, e, t10) {\n let o = t10.tensorMap.get(r.dataId), n = y.sizeFromShape(r.shape), s = r.shape[r.shape.length - 1], a = n / s, i = [], p = me({ inputs: { x: r }, backend: t10, attrs: { shape: [a, s] } });\n i.push(p);\n let u = p.shape, c = new jl(\"real\", u), l = new jl(\"imag\", u), m = [{ dataId: o.complexTensorInfos.real.dataId, dtype: o.complexTensorInfos.real.dtype, shape: u }, { dataId: o.complexTensorInfos.imag.dataId, dtype: o.complexTensorInfos.imag.dtype, shape: u }], d = e ? 2 * Math.PI : -2 * Math.PI, f = e ? u[1] : 1, h = [{ type: \"float32\", data: [d] }, { type: \"float32\", data: [f] }], g = t10.runWebGPUProgram(c, m, \"float32\", h);\n i.push(g);\n let x = t10.runWebGPUProgram(l, m, \"float32\", h);\n i.push(x);\n let b = po({ inputs: { real: g, imag: x }, backend: t10 });\n i.push(b);\n let C = me({ inputs: { x: b }, backend: t10, attrs: { shape: r.shape } });\n return i.forEach((w) => t10.disposeData(w.dataId)), C;\n}\nfunction Doe(r) {\n let { inputs: e, backend: t10 } = r, { input: o } = e;\n return ux(o, false, t10);\n}\nvar TL = { kernelName: ui, backendName: \"webgpu\", kernelFunc: Doe };\nvar px = class {\n constructor(e) {\n this.outputShape = [], this.variableNames = [\"x\"], this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = e, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.shaderKey = \"flipLeftRight\";\n }\n getUserCode() {\n return `\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let coords = getCoordsFromIndex(index);\n let coordX = uniforms.xShape[2] - coords[2] - 1;\n let outputValue = getX(coords[0], coords[1], coordX, coords[3]);\n setOutputAtIndex(index, outputValue);\n }\n }\n `;\n }\n};\nvar _L = { kernelName: rn, backendName: \"webgpu\", kernelFunc: ({ inputs: r, backend: e }) => {\n let { image: t10 } = r, o = e, n = new px(t10.shape);\n return o.runWebGPUProgram(n, [t10], t10.dtype);\n} };\nvar Foe = xe({ opType: X.FLOOR, cpuKernelImpl: eM });\nvar $L = { kernelName: on, backendName: \"webgpu\", kernelFunc: Foe };\nvar Ooe = Ze({ opType: ge.INT_DIV, dtype: \"int32\" });\nvar EL = { kernelName: nn, backendName: \"webgpu\", kernelFunc: Ooe };\nvar cx = class {\n constructor(e, t10, o = false) {\n this.isFromPixels = true, this.outputShape = [0], this.variableNames = [], this.workgroupSize = [256, 1, 1], this.outputShape = e, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize, [t10, 1, 1]), this.importVideo = o, this.shaderKey = `fromPixels_${this.importVideo}`;\n }\n getUserCode() {\n let e = this.importVideo ? \"textureLoad(src, vec2(coords.yx));\" : \"textureLoad(src, vec2(coords.yx), 0)\";\n return `\n @binding(1) @group(0) var src: ${this.importVideo ? \"texture_external\" : \"texture_2d\"};\n ${Q(\"index\")} {\n let flatIndex = index * uniforms.numChannels;\n if (flatIndex < uniforms.size) {\n let coords = getCoordsFromIndex(flatIndex);\n let values = ${e};\n for (var i = 0; i < uniforms.numChannels; i = i + 1) {\n result[flatIndex + i] = i32(floor(255.0 * values[i]));\n }\n }\n }\n `;\n }\n};\nvar AL = { kernelName: Zi, backendName: \"webgpu\", kernelFunc: Poe };\nvar Ac;\nvar kI = O().getBool(\"CANVAS2D_WILL_READ_FREQUENTLY_FOR_GPU\");\nvar lx = /* @__PURE__ */ new Map();\nfunction Poe(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { pixels: n } = e, { numChannels: s } = o;\n if (n == null)\n throw new Error(\"pixels passed to tf.browser.fromPixels() can not be null\");\n let a = typeof HTMLVideoElement != \"undefined\" && n instanceof HTMLVideoElement, i = typeof HTMLImageElement != \"undefined\" && n instanceof HTMLImageElement, p = typeof HTMLCanvasElement != \"undefined\" && n instanceof HTMLCanvasElement || typeof OffscreenCanvas != \"undefined\" && n instanceof OffscreenCanvas, u = typeof ImageBitmap != \"undefined\" && n instanceof ImageBitmap, [c, l] = a ? [n.videoWidth, n.videoHeight] : [n.width, n.height], m = [l, c, s], d = false, f = a || i;\n if (u || p || f) {\n let b;\n if (d) {\n let D = n;\n if (!lx.has(D) || lx.get(D).expired) {\n let P = { source: D };\n lx.set(D, t10.device.importExternalTexture(P));\n }\n b = { width: c, height: l, format: null, usage: null, texture: lx.get(D) };\n } else {\n if (f) {\n let L = O().getBool(\"CANVAS2D_WILL_READ_FREQUENTLY_FOR_GPU\");\n (Ac == null || L !== kI) && (kI = L, Ac = document.createElement(\"canvas\").getContext(\"2d\", { willReadFrequently: kI })), Ac.canvas.width = c, Ac.canvas.height = l, Ac.drawImage(n, 0, 0, c, l), n = Ac.canvas;\n }\n let D = GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING, P = \"rgba8unorm\", M = t10.textureManager.acquireTexture(m[1], m[0], P, D);\n t10.queue.copyExternalImageToTexture({ source: n }, { texture: M }, [m[1], m[0]]), b = { width: c, height: l, format: P, usage: D, texture: M };\n }\n let C = y.sizeFromShape(m), w = y.computeStrides(m), k = new cx(m, s, d), _ = [{ type: \"uint32\", data: [C] }, { type: \"uint32\", data: [s] }, { type: \"uint32\", data: [...w] }], E = t10.makeTensorInfo([l, c], \"int32\"), A = t10.tensorMap.get(E.dataId);\n A.resourceInfo = b;\n let R = t10.runWebGPUProgram(k, [E], \"int32\", _);\n return t10.disposeData(E.dataId), R;\n }\n let h = n.data, g = h;\n if (s != null && s !== 4) {\n g = new Uint8Array(n.width * n.height * s);\n let b = h.length, C = 0;\n for (let w = 0; w < b; w++)\n w % 4 < s && (g[C++] = h[w]);\n }\n let x = t10.makeTensorInfo(m, \"int32\", new Int32Array(g));\n return t10.uploadToGPU(x.dataId), x;\n}\nvar mx = class {\n constructor(e, t10, o, n, s) {\n this.uniforms = \"varianceEpsilon : f32,\", this.workgroupSize = [128, 1, 1], this.size = true, this.variableNames = [\"x\", \"mean\", \"variance\"], S.assertAndGetBroadcastShape(e, t10), S.assertAndGetBroadcastShape(e, o), this.outputShape = e, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), n != null && (S.assertAndGetBroadcastShape(e, n), this.variableNames.push(\"offset\")), s != null && (S.assertAndGetBroadcastShape(e, s), this.variableNames.push(\"scale\")), this.offsetShape = n, this.scaleShape = s, this.shaderKey = \"batchNorm\";\n }\n getUserCode() {\n let e = \"0.0\";\n this.offsetShape != null && (e = \"getOffsetByOutputIndex(index)\");\n let t10 = \"1.0\";\n return this.scaleShape != null && (t10 = \"getScaleByOutputIndex(index)\"), `\n ${Q(\"index\")} {\n if (index < uniforms.size)\n {\n let xValue = getXByOutputIndex(index);\n let meanValue = getMeanByOutputIndex(index);\n let varianValue = getVarianceByOutputIndex(index);\n let offsetValue = ${e};\n let scaleValue = ${t10};\n let inv = scaleValue * inverseSqrt(varianValue + f32(uniforms.varianceEpsilon));\n setOutputAtIndex(index,dot(vec3(xValue, -meanValue, offsetValue), vec3(inv, inv, 1.0)));\n }\n }\n `;\n }\n};\nvar RL = { kernelName: sn, backendName: \"webgpu\", kernelFunc: ({ inputs: r, attrs: e, backend: t10 }) => {\n let { x: o, scale: n, offset: s, mean: a, variance: i } = r, { varianceEpsilon: p } = e, u = t10, c = [o, a, i], l = null;\n s != null && (l = s.shape, c.push(s));\n let m = null;\n n != null && (m = n.shape, c.push(n));\n let d = new mx(o.shape, a.shape, i.shape, l, m), f = [{ type: \"float32\", data: [p] }];\n return u.runWebGPUProgram(d, c, o.dtype, f);\n} };\nfunction Moe(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, filter: s, bias: a, preluActivationWeights: i } = e, { strides: p, pad: u, dataFormat: c, dilations: l, dimRoundingMode: m, activation: d, leakyreluAlpha: f } = o, h = S.convertConv2DDataFormat(c), g = S.computeConv2DInfo(n.shape, s.shape, p, l, u, m, false, h);\n return Qg({ x: n, filter: s, convInfo: g, backend: t10, bias: a, preluActivationWeights: i, leakyreluAlpha: f, activation: d });\n}\nvar DL = { kernelName: go, backendName: \"webgpu\", kernelFunc: Moe };\nfunction Loe(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, filter: s, bias: a, preluActivationWeights: i } = e, { strides: p, pad: u, dilations: c, dimRoundingMode: l, activation: m, leakyreluAlpha: d } = o, f = c;\n f == null && (f = [1, 1]), y.assert(S.eitherStridesOrDilationsAreOne(p, f), () => `Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${p} and dilations '${f}'`);\n let h = S.computeConv2DInfo(n.shape, s.shape, p, f, u, l, true), g = [n, s], x = a != null, b = i != null;\n x && g.push(a), b && g.push(i);\n let C = [{ type: \"int32\", data: [h.padInfo.top, h.padInfo.left] }, { type: \"int32\", data: [h.inHeight, h.inWidth] }], w;\n return h.outHeight > 4 && h.outWidth > 4 && h.strideWidth <= 2 && h.inChannels === h.outChannels && h.dilationHeight === 1 && h.dilationWidth === 1 && h.inChannels % 4 === 0 ? w = new $c(h, x, m, b) : (w = new Ec(h, x, m, b), C.push({ type: \"int32\", data: [h.filterHeight] }, { type: \"int32\", data: [h.filterWidth] }, { type: \"int32\", data: [h.strideHeight, h.strideWidth] }, { type: \"int32\", data: [h.dilationHeight, h.dilationWidth] })), m === \"leakyrelu\" && (C.push({ type: \"float32\", data: [d] }), w.uniforms += \" alpha : f32,\"), t10.runWebGPUProgram(w, g, \"float32\", C);\n}\nvar FL = { kernelName: xo, backendName: \"webgpu\", kernelFunc: Loe };\nvar dx = class {\n constructor(e, t10) {\n this.variableNames = [\"A\", \"indices\"], this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = t10, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.shaderKey = `gathernd_${e}`, this.sliceDim = e, this.uniforms = `sliceDim : i32, strides : ${Rt(e)},`;\n }\n getUserCode() {\n let e;\n return this.sliceDim > 1 ? e = \"uniforms.strides[j]\" : e = \"uniforms.strides\", `\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let coords = getCoordsFromIndex(index);\n var flattenIndex = 0;\n for (var j = 0; j < uniforms.sliceDim; j = j + 1) {\n let indexTemp = i32(round(getIndices(coords[0], j)));\n let strideNum = ${e};\n flattenIndex = flattenIndex + indexTemp * strideNum;\n }\n\n setOutputAtIndex(index, getA(flattenIndex, coords[1]));\n }\n }\n `;\n }\n};\nfunction Boe(r) {\n let { inputs: e, backend: t10 } = r, { params: o, indices: n } = e, s = n.shape, a = s[s.length - 1], i = y.sizeFromShape(o.shape), [p, u, c, l] = S.prepareAndValidate(o, n), m = me({ inputs: { x: n }, backend: t10, attrs: { shape: [u, a] } }), d = me({ inputs: { x: o }, backend: t10, attrs: { shape: [y.sizeFromShape(o.shape) / c, c] } });\n if (t10.shouldExecuteOnCPU([o, n]) || o.dtype === \"string\") {\n let b = t10.readSync(n.dataId), C = t10.bufferSync(o), w = tM(b, C, o.dtype, u, a, c, l, o.shape, i);\n return t10.makeTensorInfo(p, o.dtype, w.values);\n }\n let f = new dx(a, [u, c]), h = [{ type: \"int32\", data: [a] }, { type: \"int32\", data: l }], g = t10.runWebGPUProgram(f, [d, m], d.dtype, h), x = me({ inputs: { x: g }, backend: t10, attrs: { shape: p } });\n return t10.disposeData(m.dataId), t10.disposeData(d.dataId), t10.disposeData(g.dataId), x;\n}\nvar OL = { kernelName: an, backendName: \"webgpu\", kernelFunc: Boe };\nvar fx = class {\n constructor(e, t10) {\n this.variableNames = [\"A\", \"indices\"], this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = e.slice(), this.aShape = e, this.outputShape = t10, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.shaderKey = \"gather\";\n }\n getUserCode() {\n let e = Voe(this.aShape);\n return `\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let resRC = getCoordsFromIndex(index);\n let indexZ = i32(getIndices(resRC.x, resRC.z));\n let inBounds = select(0.0, 1.0, indexZ >= 0 && indexZ < uniforms.aShape[2]);\n setOutputAtIndex(index, inBounds * getA(${e}));\n }\n }\n `;\n }\n};\nfunction Voe(r) {\n let e = [\"resRC.x\", \"resRC.y\", \"resRC.z\", \"resRC.w\"], t10 = [];\n for (let o = 0; o < r.length; o++)\n o === 2 ? t10.push(\"indexZ\") : t10.push(`${e[o]}`);\n return t10.join();\n}\nfunction NI(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n, indices: s } = e, { axis: a, batchDims: i } = o, p = y.parseAxisParam(a, n.shape)[0], u = S.segment_util.collectGatherOpShapeInfo(n, s, p, i), c = y.sizeFromShape(s.shape), l = [], m = me({ inputs: { x: n }, backend: t10, attrs: { shape: [u.batchSize, u.outerSize, u.dimSize, u.sliceSize] } }), d = me({ inputs: { x: s }, backend: t10, attrs: { shape: [u.batchSize, c / u.batchSize] } });\n l.push(m), l.push(d);\n let f = [u.batchSize, u.outerSize, c / u.batchSize, u.sliceSize];\n if (t10.shouldExecuteOnCPU([n, s])) {\n let C = t10.tensorMap.get(d.dataId).values, w = le(d.shape, d.dtype, C), _ = t10.tensorMap.get(m.dataId).values, E = le(m.shape, m.dtype, _), A = rM(E, w, f);\n return l.forEach((R) => t10.disposeData(R.dataId)), t10.makeTensorInfo(u.outputShape, A.dtype, A.values);\n }\n let h = new fx(m.shape, f), g = t10.runWebGPUProgram(h, [m, d], m.dtype);\n l.push(g);\n let x = me({ inputs: { x: g }, backend: t10, attrs: { shape: u.outputShape } });\n return l.forEach((b) => t10.disposeData(b.dataId)), x;\n}\nvar PL = { kernelName: Is, backendName: \"webgpu\", kernelFunc: NI };\nvar zoe = Ze({ opType: ge.GREATER, cpuKernelImpl: nM, dtype: \"bool\" });\nvar ML = { kernelName: un, backendName: \"webgpu\", kernelFunc: zoe };\nvar Woe = Ze({ opType: ge.GREATER_EQUAL, dtype: \"bool\", cpuKernelImpl: oM });\nvar LL = { kernelName: pn, backendName: \"webgpu\", kernelFunc: Woe };\nfunction Uoe(r) {\n let { inputs: e, backend: t10 } = r, { input: o } = e;\n return ux(o, true, t10);\n}\nvar BL = { kernelName: pi, backendName: \"webgpu\", kernelFunc: Uoe };\nvar Goe = xe({ opType: X.IS_FINITE, dtype: \"bool\" });\nvar VL = { kernelName: ha, backendName: \"webgpu\", kernelFunc: Goe };\nvar Hoe = xe({ opType: X.IS_INF, dtype: \"bool\" });\nvar zL = { kernelName: ga, backendName: \"webgpu\", kernelFunc: Hoe };\nvar Koe = xe({ opType: X.IS_NAN, dtype: \"bool\" });\nvar WL = { kernelName: cn, backendName: \"webgpu\", kernelFunc: Koe };\nfunction qoe(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { alpha: s } = o, a = [{ type: \"float32\", data: [s] }], i = new Hr(n.shape, X.LEAKYRELU, \"alpha : f32,\");\n return t10.runWebGPUProgram(i, [n], \"float32\", a);\n}\nvar UL = { kernelName: ln, backendName: \"webgpu\", kernelFunc: qoe };\nvar joe = Ze({ opType: ge.LESS, dtype: \"bool\", cpuKernelImpl: aM });\nvar GL = { kernelName: mn, backendName: \"webgpu\", kernelFunc: joe };\nvar Xoe = Ze({ opType: ge.LESS_EQUAL, dtype: \"bool\", cpuKernelImpl: sM });\nvar HL = { kernelName: dn, backendName: \"webgpu\", kernelFunc: Xoe };\nvar hx = class {\n constructor(e) {\n this.variableNames = [], this.outputShape = [], this.uniforms = \"start : f32, step : f32,\", this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = [e], this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.shaderKey = \"linSpace\";\n }\n getUserCode() {\n return `\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n setOutputAtIndex(index, uniforms.start + f32(index) * uniforms.step);\n }\n }\n `;\n }\n};\nfunction Yoe(r) {\n let { backend: e, attrs: t10 } = r, { start: o, stop: n, num: s } = t10, a = (n - o) / (s - 1), i = new hx(s), p = [{ type: \"float32\", data: [o] }, { type: \"float32\", data: [a] }];\n return e.runWebGPUProgram(i, [], \"float32\", p);\n}\nvar KL = { kernelName: li, backendName: \"webgpu\", kernelFunc: Yoe };\nvar Qoe = xe({ opType: X.LOG, cpuKernelImpl: iM });\nvar qL = { kernelName: fn, backendName: \"webgpu\", kernelFunc: Qoe };\nvar Zoe = xe({ opType: X.LOG1P });\nvar jL = { kernelName: xa, backendName: \"webgpu\", kernelFunc: Zoe };\nvar Joe = Ze({ opType: ge.LOGICAL_AND, dtype: \"bool\" });\nvar XL = { kernelName: hn, backendName: \"webgpu\", kernelFunc: Joe };\nvar ene = xe({ opType: X.LOGICAL_NOT });\nvar YL = { kernelName: gn, backendName: \"webgpu\", kernelFunc: ene };\nvar tne = Ze({ opType: ge.LOGICAL_OR });\nvar QL = { kernelName: xn, backendName: \"webgpu\", kernelFunc: tne };\nvar ZL = `\n var powValue = 0.0;\n let basis = uniforms.bias + uniforms.alpha * sum;\n if (uniforms.beta == 0.5) {\n powValue = inverseSqrt(basis);\n } else if (uniforms.beta == 1.0) {\n powValue = 1.0 / basis;\n } else {\n powValue = exp(log(basis) * (-uniforms.beta));\n }\n`;\nvar gx = class {\n constructor(e) {\n this.outputShape = [], this.variableNames = [\"x\"], this.uniforms = \"radius : i32, bias : f32, alpha : f32, beta : f32,\", this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = e, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.shaderKey = \"lrn\";\n }\n getUserCode() {\n return `\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let coords = getOutputCoords();\n let b = coords[0];\n let r = coords[1];\n let c = coords[2];\n let d = coords[3];\n\n let x = getX(b, r, c, d);\n var sum = 0.0;\n for (var i = -uniforms.radius; i <= uniforms.radius; i = i + 1) {\n let idx = d + i;\n if (idx >= 0 && idx < uniforms.xShape[3]) {\n let z = getX(b, r, c, idx);\n sum = sum + z * z;\n }\n }\n ${ZL}\n\n setOutputAtIndex(index, x * powValue);\n }\n }\n `;\n }\n};\nvar xx = class {\n constructor(e, t10) {\n this.outputShape = [], this.variableNames = [\"x\"], this.uniforms = \"radius : i32, bias : f32, alpha : f32, beta : f32,\", this.workgroupSize = [256, 1, 1], this.maxAllowRadius = 16, y.assert(t10 <= this.maxAllowRadius, () => `Radius must be less than or equal to ${this.maxAllowRadius}, current radius is ${t10}`), this.outputShape = e, this.elementsPerWorkgroup = this.workgroupSize[0] - 2 * this.maxAllowRadius, this.dispatchLayout = { x: [3], y: [2], z: [0, 1] }, this.dispatch = Y(this.dispatchLayout, this.outputShape, [this.elementsPerWorkgroup, this.workgroupSize[1], this.workgroupSize[2]]), this.shaderKey = \"lrn_shared\";\n }\n getUserCode() {\n return `\n var lrnSub: array;\n const elementsPerWorkgroup = ${this.elementsPerWorkgroup};\n const maxAllowRadius = ${this.maxAllowRadius};\n\n ${Q()} {\n let localDepth = i32(localId.x);\n let workgroupDepth = i32(workgroupId.x) * elementsPerWorkgroup;\n let xDepth = workgroupDepth + localDepth - maxAllowRadius;\n let b = i32(globalId.z) / uniforms.xShape[1];\n let r = i32(globalId.z) - b * uniforms.xShape[1];\n let c = i32(globalId.y);\n let d = workgroupDepth + localDepth;\n\n var x = 0.0;\n if (xDepth >= 0 && xDepth < uniforms.xShape[3]) {\n x = getX(b, r, c, xDepth);\n }\n lrnSub[localDepth] = x;\n workgroupBarrier();\n\n if (localDepth < elementsPerWorkgroup && d < uniforms.outShape[3]) {\n var sum = 0.0;\n let index = localDepth + maxAllowRadius;\n for (var i = -uniforms.radius; i <= uniforms.radius; i = i + 1) {\n let z = lrnSub[index + i];\n sum = sum + z * z;\n }\n ${ZL}\n\n setOutputAtCoords(b, r, c, d, lrnSub[index] * powValue);\n }\n } `;\n }\n};\nfunction rne(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { depthRadius: s, bias: a, alpha: i, beta: p } = o, u;\n s > 16 ? u = new gx(n.shape) : u = new xx(n.shape, s);\n let c = [{ type: \"int32\", data: [s] }, { type: \"float32\", data: [a] }, { type: \"float32\", data: [i] }, { type: \"float32\", data: [p] }];\n return t10.runWebGPUProgram(u, [n], n.dtype, c);\n}\nvar JL = { kernelName: mi, backendName: \"webgpu\", kernelFunc: rne };\nvar one = Ze({ opType: ge.MAX, cpuKernelImpl: pM });\nvar eB = { kernelName: bn, backendName: \"webgpu\", kernelFunc: one };\nfunction nne(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { filterSize: s, strides: a, pad: i, dimRoundingMode: p } = o, u = 1, c = S.computePool2DInfo(n.shape, s, a, u, i, p);\n return zg(n, c, \"max\", t10);\n}\nvar tB = { kernelName: Cn, backendName: \"webgpu\", kernelFunc: nne };\nfunction sne(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s, keepDims: a } = o;\n return Kr(n, s, a, \"min\", t10);\n}\nvar rB = { kernelName: wn, backendName: \"webgpu\", kernelFunc: sne };\nvar ane = Ze({ opType: ge.MIN, cpuKernelImpl: cM });\nvar oB = { kernelName: In, backendName: \"webgpu\", kernelFunc: ane };\nvar yx = class {\n constructor(e, t10, o) {\n this.uniforms = \"\", this.variableNames = [\"x\"], this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = t10.map((n, s) => n[0] + e[s] + n[1]), this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.xShape = e, t10.map((n, s) => {\n this.uniforms += ` pad${s} : vec2,`;\n }), this.offset = o === \"reflect\" ? 0 : 1, this.shaderKey = `mirrorPad_${o}`;\n }\n getUserCode() {\n let e = this.xShape.length, t10 = this.xShape.map((u, c) => `uniforms.pad${c}[0]`).join(\",\"), o = this.xShape.map((u, c) => `uniforms.pad${c}[0] + uniforms.xShape${e > 1 ? `[${c}]` : \"\"}`).join(\",\"), n = e === 1 ? \"start\" : \"start[i]\", s = e === 1 ? \"end\" : \"end[i]\", a = e === 1 ? \"outC\" : \"outC[i]\", i = Rt(e), p = e > 1 ? [\"coords[0]\", \"coords[1]\", \"coords[2]\", \"coords[3]\"].slice(0, e) : \"coords\";\n return `\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let start = ${i}(${t10});\n let end = ${i}(${o});\n var outC = getCoordsFromIndex(index);\n for (var i = 0; i < ${e}; i = i + 1) {\n if (${a} < ${n}) {\n ${a} = ${n} * 2 - ${a} - ${this.offset};\n } else if(${a} >= ${s}) {\n ${a} = (${s} - 1) * 2 - ${a} + ${this.offset};\n }\n }\n let coords = outC - start;\n setOutputAtIndex(index, getX(${p}));\n }\n }\n `;\n }\n};\nvar nB = { kernelName: vn, backendName: \"webgpu\", kernelFunc: ({ inputs: r, attrs: e, backend: t10 }) => {\n let { x: o } = r, { paddings: n, mode: s } = e, a = t10, i = n.map((c) => ({ type: \"int32\", data: [c[0], c[1]] })), p = new yx(o.shape, n, s);\n return a.runWebGPUProgram(p, [o], o.dtype, i);\n} };\nvar ine = Ze({ opType: ge.MOD });\nvar sB = { kernelName: ya, backendName: \"webgpu\", kernelFunc: ine };\nfunction une(r) {\n let { inputs: e, backend: t10 } = r, { x: o } = e;\n if (t10.shouldExecuteOnCPU([o])) {\n let s = t10.tensorMap.get(o.dataId), [a, i] = mM(s.values, o.shape, o.dtype);\n return t10.makeTensorInfo(i, o.dtype, a);\n }\n let n = new Hr(o.shape, X.NEG);\n return t10.runWebGPUProgram(n, [o], o.dtype);\n}\nvar aB = { kernelName: vs, backendName: \"webgpu\", kernelFunc: une };\nfunction pne(r) {\n console.warn(\"tf.nonMaxSuppression() in webgpu locks the UI thread. Call tf.nonMaxSuppressionAsync() instead\");\n let { inputs: e, backend: t10, attrs: o } = r, { boxes: n, scores: s } = e, { maxOutputSize: a, iouThreshold: i, scoreThreshold: p } = o, u = t10.readSync(n.dataId), c = t10.readSync(s.dataId), { selectedIndices: l } = Vt.nonMaxSuppressionV3Impl(u, c, a, i, p);\n return t10.makeTensorInfo([l.length], \"int32\", new Int32Array(l));\n}\nvar iB = { kernelName: Tn, backendName: \"webgpu\", kernelFunc: pne };\nfunction cne(r) {\n console.warn(\"tf.nonMaxSuppression() in webgpu locks the UI thread. Call tf.nonMaxSuppressionAsync() instead\");\n let { inputs: e, backend: t10, attrs: o } = r, { boxes: n, scores: s } = e, { maxOutputSize: a, iouThreshold: i, scoreThreshold: p, softNmsSigma: u } = o, c = t10.readSync(n.dataId), l = t10.readSync(s.dataId), m = a, d = i, f = p, h = u, { selectedIndices: g, selectedScores: x } = Vt.nonMaxSuppressionV5Impl(c, l, m, d, f, h);\n return [t10.makeTensorInfo([g.length], \"int32\", new Int32Array(g)), t10.makeTensorInfo([x.length], \"float32\", new Float32Array(x))];\n}\nvar uB = { kernelName: _n, backendName: \"webgpu\", kernelFunc: cne };\nvar bx = class {\n constructor(e, t10) {\n this.variableNames = [\"x\"], this.uniforms = \"onValue : f32, offValue : f32,\", this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = [e, t10], this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.shaderKey = \"onehot\";\n }\n getUserCode() {\n return `\n ${Q(\"index\")} {\n if(index < uniforms.size) {\n let coords = getCoordsFromIndex(index);\n setOutputAtIndex(index, mix(uniforms.offValue, uniforms.onValue,\n f32(i32(round(getX(coords.x))) == coords.y)));\n }\n }\n `;\n }\n};\nfunction lne(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { indices: n } = e, { dtype: s, depth: a, onValue: i, offValue: p } = o, u = y.sizeFromShape(n.shape), c = new bx(u, a), l = me({ inputs: { x: n }, backend: t10, attrs: { shape: [u] } }), m = [{ type: \"float32\", data: [i] }, { type: \"float32\", data: [p] }], d = t10.runWebGPUProgram(c, [l], s, m);\n t10.disposeData(l.dataId);\n let f = [...n.shape, a], h = me({ inputs: { x: d }, backend: t10, attrs: { shape: f } });\n return t10.disposeData(d.dataId), h;\n}\nvar pB = { kernelName: $n, backendName: \"webgpu\", kernelFunc: lne };\nfunction Xl(r) {\n let { inputs: e, backend: t10 } = r, { x: o } = e;\n if (o.dtype === \"complex64\") {\n let n = Xa({ inputs: { input: o }, backend: t10 }), s = Xl({ inputs: { x: n }, backend: t10 }), a = Qu({ inputs: { input: o }, backend: t10 }), i = Xl({ inputs: { x: a }, backend: t10 }), p = po({ inputs: { real: s, imag: i }, backend: t10 });\n return t10.disposeData(n.dataId), t10.disposeData(s.dataId), t10.disposeData(a.dataId), t10.disposeData(i.dataId), p;\n } else\n return fr({ attrs: { shape: o.shape, dtype: o.dtype, value: o.dtype === \"string\" ? \"\" : 0 }, backend: t10 });\n}\nvar cB = { kernelName: Os, backendName: \"webgpu\", kernelFunc: Xl };\nfunction lB(r) {\n let { inputs: e, backend: t10 } = r, { x: o } = e;\n if (o.dtype === \"string\")\n throw new Error(\"onesLike is not supported under string dtype\");\n if (o.dtype === \"complex64\") {\n let n = Xa({ inputs: { input: o }, backend: t10 }), s = lB({ inputs: { x: n }, backend: t10 }), a = Qu({ inputs: { input: o }, backend: t10 }), i = Xl({ inputs: { x: a }, backend: t10 }), p = po({ inputs: { real: s, imag: i }, backend: t10 });\n return t10.disposeData(n.dataId), t10.disposeData(s.dataId), t10.disposeData(a.dataId), t10.disposeData(i.dataId), p;\n } else\n return fr({ attrs: { shape: o.shape, dtype: o.dtype, value: 1 }, backend: t10 });\n}\nvar mB = { kernelName: ks, backendName: \"webgpu\", kernelFunc: lB };\nfunction mne(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { axis: n } = o;\n if (e.length === 1)\n return ix({ inputs: { input: e[0] }, backend: t10, attrs: { dim: n } });\n let s = e[0].shape, a = e[0].dtype;\n e.forEach((c) => {\n y.assertShapesMatch(s, c.shape, \"All tensors passed to stack must have matching shapes\"), y.assert(a === c.dtype, () => \"All tensors passed to stack must have matching dtypes\");\n });\n let i = [], p = e.map((c) => {\n let l = ix({ inputs: { input: c }, backend: t10, attrs: { dim: n } });\n return i.push(l), l;\n }), u = wI({ inputs: p, backend: t10, attrs: { axis: n } });\n return i.forEach((c) => t10.disposeData(c.dataId)), u;\n}\nvar dB = { kernelName: Ns, backendName: \"webgpu\", kernelFunc: mne };\nvar Cx = class {\n constructor(e, t10) {\n this.variableNames = [\"x\"], this.uniforms = \"constantValue : f32,\", this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = t10.map((o, n) => o[0] + e[n] + o[1]), this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), t10.map((o, n) => {\n this.uniforms += ` pad${n} : vec2,`;\n }), this.xShape = e, this.shaderKey = \"pad\";\n }\n getUserCode() {\n let e = this.xShape.length, t10 = Rt(e), o = this.xShape.map((l, m) => `uniforms.pad${m}[0]`).join(\",\"), n = this.xShape.map((l, m) => `uniforms.pad${m}[0] + uniforms.xShape${e > 1 ? `[${m}]` : \"\"}`).join(\",\"), s = e > 1 ? `${t10}(${o})` : `${o}`, a = e > 1 ? `${t10}(${n})` : `${n}`, i = e > 1 ? \"any(outC < start)\" : \"outC < start\", p = e > 1 ? \"any(outC >= end)\" : \"outC >= end\", u = e > 1 ? [\"coords[0]\", \"coords[1]\", \"coords[2]\", \"coords[3]\"].slice(0, e) : \"coords\";\n return `\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let start = ${s};\n let end = ${a};\n let outC = getCoordsFromIndex(index);\n\n if (${i} || ${p}) {\n setOutputAtIndex(index, uniforms.constantValue);\n } else {\n let coords = outC - start;\n setOutputAtIndex(index, getX(${u}));\n }\n }\n }\n `;\n }\n};\nvar TI = (r) => {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { paddings: s, constantValue: a } = o;\n if (s.every((u) => y.arraysEqual(u, [0, 0])))\n return Dt({ inputs: { x: n }, backend: t10 });\n if (y.sizeFromShape(n.shape) === 0) {\n let u = s.map((c, l) => c[0] + n.shape[l] + c[1]);\n return fr({ backend: t10, attrs: { shape: u, value: a, dtype: n.dtype } });\n }\n let i = [{ type: \"float32\", data: [a] }];\n s.map((u) => i.push({ type: \"int32\", data: [u[0], u[1]] }));\n let p = new Cx(n.shape, s);\n return t10.runWebGPUProgram(p, [n], n.dtype, i);\n};\nvar fB = { kernelName: En, backendName: \"webgpu\", kernelFunc: TI };\nvar dne = Ze({ opType: ge.POW });\nvar hB = { kernelName: An, backendName: \"webgpu\", kernelFunc: dne };\nfunction fne(r) {\n let { inputs: e, backend: t10 } = r, { x: o, alpha: n } = e, s = new Yu(ge.PRELU, o.shape, n.shape);\n return t10.runWebGPUProgram(s, [o, n], \"float32\");\n}\nvar gB = { kernelName: Rn, backendName: \"webgpu\", kernelFunc: fne };\nfunction hne(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { axis: s, keepDims: a } = o;\n return Kr(n, s, a, \"prod\", t10);\n}\nvar xB = { kernelName: Dn, backendName: \"webgpu\", kernelFunc: hne };\nvar gne = (r) => {\n let { backend: e, attrs: t10 } = r, { start: o, stop: n, step: s, dtype: a } = t10, i = hM(o, n, s, a);\n return e.makeTensorInfo([i.length], a, i);\n};\nvar yB = { kernelName: Ts, backendName: \"webgpu\", kernelFunc: gne };\nvar _I = Ze({ opType: ge.DIV });\nvar bB = { kernelName: Zo, backendName: \"webgpu\", kernelFunc: _I };\nvar xne = xe({ opType: X.RECIPROCAL });\nvar CB = { kernelName: Fn, backendName: \"webgpu\", kernelFunc: xne };\nvar yne = xe({ opType: X.RELU });\nvar SB = { kernelName: On, backendName: \"webgpu\", kernelFunc: yne };\nvar bne = xe({ opType: X.RELU6 });\nvar wB = { kernelName: Ln, backendName: \"webgpu\", kernelFunc: bne };\nvar Sx = class {\n constructor(e, t10, o) {\n this.variableNames = [\"x\"], this.uniforms = \"adjustHeightWidth : vec2, halfPixelCenters : f32,\", this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = [e[0], t10, o, e[3]], this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.shaderKey = \"resizeBilinear\";\n }\n getUserCode() {\n return `\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let coords = getCoordsFromIndex(index);\n let b = coords[0];\n let d = coords[3];\n let rc = coords.yz;\n\n let effectiveInSize = vec2(\n f32(uniforms.xShape.y) - uniforms.adjustHeightWidth[0],\n f32(uniforms.xShape.z) - uniforms.adjustHeightWidth[1]);\n\n let effectiveOutSize = vec2(\n f32(uniforms.outShape.y) - uniforms.adjustHeightWidth[0],\n f32(uniforms.outShape.z) - uniforms.adjustHeightWidth[1]);\n\n let effectiveInputOverOutputRatioRC =\n effectiveInSize / effectiveOutSize;\n\n // Fractional source index\n let sourceFracIndexRC =\n (vec2(rc) + vec2(uniforms.halfPixelCenters)) *\n effectiveInputOverOutputRatioRC - vec2(uniforms.halfPixelCenters);\n\n // Compute the four integer indices.\n let sourceFloorRC = vec2(sourceFracIndexRC);\n let sourceCeilRC = vec2(\n min(vec2(uniforms.xShape.yz) - vec2(1.0), ceil(sourceFracIndexRC)));\n\n let topLeft = getX(b, sourceFloorRC.x, sourceFloorRC.y, d);\n let bottomLeft = getX(b, sourceCeilRC.x, sourceFloorRC.y, d);\n let topRight = getX(b, sourceFloorRC.x, sourceCeilRC.y, d);\n let bottomRight = getX(b, sourceCeilRC.x, sourceCeilRC.y, d);\n\n let fracRC = sourceFracIndexRC - vec2(sourceFloorRC);\n\n let top = topLeft + (topRight - topLeft) * fracRC.y;\n let bottom = bottomLeft + (bottomRight - bottomLeft) * fracRC.y;\n let newValue = top + (bottom - top) * fracRC.x;\n\n setOutputAtIndex(index, newValue);\n }\n }\n `;\n }\n};\nfunction Cne(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { images: n } = e, { alignCorners: s, size: a, halfPixelCenters: i } = o, [p, u] = a, c = s && p > 1 ? 1 : 0, l = s && u > 1 ? 1 : 0, d = [{ type: \"float32\", data: [c, l] }, { type: \"float32\", data: [i ? 0.5 : 0] }], f = new Sx(n.shape, p, u);\n return t10.runWebGPUProgram(f, [n], \"float32\", d);\n}\nvar IB = { kernelName: Mn, backendName: \"webgpu\", kernelFunc: Cne };\nvar wx = class {\n constructor(e, t10, o, n) {\n this.variableNames = [\"x\"], this.uniforms = \"adjustHeightWidth : vec2, roundBase : f32,\", this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = [e[0], t10, o, e[3]], this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.halfPixelCenters = n, this.shaderKey = `resizeNearest_${n}`;\n }\n getUserCode() {\n let e;\n return this.halfPixelCenters ? e = \"max((vec2(rc) + vec2(0.5)) * effectiveInputOverOutputRatioRC, vec2(0.0))\" : e = \"vec2(rc) * effectiveInputOverOutputRatioRC\", `\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let coords = getCoordsFromIndex(index);\n let b = coords[0];\n let d = coords[3];\n let rc = coords.yz;\n\n let effectiveInSize = vec2(\n f32(uniforms.xShape.y) - uniforms.adjustHeightWidth[0],\n f32(uniforms.xShape.z) - uniforms.adjustHeightWidth[1]);\n\n let effectiveOutSize = vec2(\n f32(uniforms.outShape.y) - uniforms.adjustHeightWidth[0],\n f32(uniforms.outShape.z) - uniforms.adjustHeightWidth[1]);\n\n let effectiveInputOverOutputRatioRC =\n effectiveInSize / effectiveOutSize;\n\n // Fractional source index\n let sourceFracIndexRC = ${e};\n\n // Compute the coordinators of nearest neighbor point.\n let inputShapeRC = vec2(f32(uniforms.xShape.y), f32(uniforms.xShape.z));\n let sourceNearestRC = vec2(\n min(inputShapeRC - 1.0, floor(sourceFracIndexRC + uniforms.roundBase)));\n let newValue = getX(b, sourceNearestRC.x, sourceNearestRC.y, d);\n\n setOutputAtIndex(index, newValue);\n }\n }\n `;\n }\n};\nfunction Sne(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { images: n } = e, { alignCorners: s, halfPixelCenters: a, size: i } = o, [p, u] = i, c = s && p > 1 ? 1 : 0, l = s && u > 1 ? 1 : 0, d = [{ type: \"float32\", data: [c, l] }, { type: \"float32\", data: [s ? 0.5 : 0] }], f = new wx(n.shape, p, u, a);\n return t10.runWebGPUProgram(f, [n], n.dtype, d);\n}\nvar vB = { kernelName: Pn, backendName: \"webgpu\", kernelFunc: Sne };\nvar Ix = class {\n constructor(e) {\n this.variableNames = [\"x\"], this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = e, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.uniforms = \" axis : vec4,\", this.shaderKey = \"reverse\";\n }\n getUserCode() {\n return `\n \n // Using uniform variables as judging conditions, so the function has\n // coherent execution within all threads.\n fn getReverseCoords(coords : vec4) -> vec4 {\n var reverseCoords = coords;\n if (uniforms.axis[0] == 1) {\n reverseCoords[0] = uniforms.xShape[0] - coords[0] - 1;\n }\n if (uniforms.axis[1] == 1) {\n reverseCoords[1] = uniforms.xShape[1] - coords[1] - 1;\n }\n if (uniforms.axis[2] == 1) {\n reverseCoords[2] = uniforms.xShape[2] - coords[2] - 1;\n }\n if (uniforms.axis[3] == 1) {\n reverseCoords[3] = uniforms.xShape[3] - coords[3] - 1;\n }\n\n return reverseCoords;\n }\n \n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let coords = getCoordsFromIndex(index);\n let reverseCoords = getReverseCoords(coords);\n setOutputAtIndex(index, getX(reverseCoords[0],\n reverseCoords[1], reverseCoords[2], reverseCoords[3]));\n }\n }\n `;\n }\n};\nfunction wne(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { dims: s } = o, a = n.shape.length;\n if (a === 0)\n return Dt({ inputs: { x: n }, backend: t10 });\n let i = n.shape, p = [1, 1, 1, 1];\n i.forEach((g, x) => {\n let b = x + 4 - a;\n p[b] = g;\n });\n let u = y.parseAxisParam(s, n.shape), c = [0, 0, 0, 0];\n u.forEach((g) => {\n let x = g + 4 - a;\n c[x] = 1;\n });\n let l = [{ type: \"int32\", data: c }], m = me({ inputs: { x: n }, backend: t10, attrs: { shape: p } }), d = new Ix(p), f = t10.runWebGPUProgram(d, [m], m.dtype, l);\n t10.disposeData(m.dataId);\n let h = me({ inputs: { x: f }, backend: t10, attrs: { shape: i } });\n return t10.disposeData(f.dataId), h;\n}\nvar kB = { kernelName: Bn, backendName: \"webgpu\", kernelFunc: wne };\nvar vx = class {\n constructor(e, t10) {\n this.outputShape = [], this.variableNames = [\"x\"], this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = e, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.uniforms = `centerX : f32, centerY : f32, sinRadians : f32,\n cosRadians : f32,`, this.shaderKey = \"rotate\", this.outputShape = e, typeof t10 == \"number\" ? (this.uniforms += \" fillValue : f32,\", this.fillSnippet = \"var outputValue = uniforms.fillValue;\", this.shaderKey += \"_float\") : (this.uniforms += \" fillValue : vec3,\", this.fillSnippet = \"var outputValue = uniforms.fillValue[coords[3]];\", this.shaderKey += \"_vec3\");\n }\n getUserCode() {\n return `\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let coords = getCoordsFromIndex(index);\n let coordXFloat = (f32(coords[2]) - uniforms.centerX) *\n uniforms.cosRadians - (f32(coords[1]) - uniforms.centerY) *\n uniforms.sinRadians;\n let coordYFloat = (f32(coords[2]) - uniforms.centerX) *\n uniforms.sinRadians + (f32(coords[1]) - uniforms.centerY) *\n uniforms.cosRadians;\n let coordX = i32(round(coordXFloat + uniforms.centerX));\n let coordY = i32(round(coordYFloat + uniforms.centerY));\n ${this.fillSnippet}\n if(coordX >= 0 && coordX < uniforms.xShape[2] && coordY >= 0 &&\n coordY < uniforms.xShape[1]) {\n outputValue = getX(coords[0], coordY, coordX, coords[3]);\n }\n setOutputAtIndex(index, outputValue);\n }\n }\n `;\n }\n};\nvar NB = { kernelName: ts, backendName: \"webgpu\", kernelFunc: ({ inputs: r, attrs: e, backend: t10 }) => {\n let { image: o } = r, { radians: n, fillValue: s, center: a } = e, i = t10, p = new vx(o.shape, s), [u, c] = S.getImageCenter(a, o.shape[1], o.shape[2]), l = [{ type: \"float32\", data: [u] }, { type: \"float32\", data: [c] }, { type: \"float32\", data: [Math.sin(n)] }, { type: \"float32\", data: [Math.cos(n)] }];\n return typeof s == \"number\" ? l.push({ type: \"float32\", data: [Number.parseFloat(s.toFixed(2))] }) : l.push({ type: \"float32\", data: s }), i.runWebGPUProgram(p, [o], o.dtype, l);\n} };\nvar Ine = xe({ opType: X.ROUND });\nvar TB = { kernelName: Vn, backendName: \"webgpu\", kernelFunc: Ine };\nvar vne = xe({ opType: X.RSQRT, cpuKernelImpl: gM });\nvar _B = { kernelName: zn, backendName: \"webgpu\", kernelFunc: vne };\nvar Hi = class {\n constructor(e, t10, o, n, s, a, i, p = true) {\n this.variableNames = [\"updates\", \"indices\"], this.workgroupSize = [64, 1, 1], this.atomic = true, this.outputShape = a, this.type = i, this.sumDupeIndices = p, this.dispatchLayout = ae(e), this.dispatch = Y(this.dispatchLayout, e, this.workgroupSize), this.sliceDimGreaterThanOne = t10 > 1, this.shaderKey = `scatter_${o}_${n}_${this.sliceDimGreaterThanOne}_${i}_${p}`;\n let u = Rt(s.length);\n this.uniforms = `sliceDim : i32, strides: ${u}, updatesSize: i32,`, this.updatesRank = n, this.indicesRank = o;\n }\n getUserCode() {\n let e = \"\";\n this.indicesRank === 1 ? e = \"coords[0]\" : this.indicesRank === 2 && (e = \"coords[0], j\");\n let t10 = `getIndices(${e})`, o = this.sliceDimGreaterThanOne ? \"uniforms.strides[j]\" : \"uniforms.strides\", n = \"\", s = \"\";\n this.dispatchLayout.x.length === 1 ? (n = \"flattenedIndex\", s = `\n fn getUpdatesCoordsFromFlatIndex(index : i32) -> i32 {\n return index;\n }\n `) : this.dispatchLayout.x.length === 2 && (n = \"vec2(flattenedIndex, coords[1])\", s = `\n fn getUpdatesCoordsFromFlatIndex(index : i32) -> vec2 {\n // N.B. |updates| could be a scalar tensor, conceptually representing a\n // 2D tensor with all values equal to that. By design, its size must be\n // the same as |outShape[1]| in one dimension, and |indicesShape[0]|\n // gives the other.\n let sliceSize = uniforms.outShape[1];\n let d0 = index / sliceSize;\n let d1 = index - d0 * sliceSize;\n return vec2(d0, d1);\n }\n `);\n let i = `getUpdates(${Array.from({ length: this.updatesRank }, (u, c) => `coords[${c}]`).join(\", \")})`;\n return `\n ${s}\n ${Q(\"index\")} {\n if (index < uniforms.updatesSize) {\n let coords = getUpdatesCoordsFromFlatIndex(index);\n var flattenedIndex = 0;\n for (var j = 0; j < uniforms.sliceDim; j = j + 1) {\n let indexInside = i32(round(${t10}));\n flattenedIndex = flattenedIndex + indexInside * ${o};\n }\n let updateValue =\n ${vc(this.type, false)}(${i});\n let flatIndex = getOutputIndexFromCoords(${n});\n\n ${this.sumDupeIndices ? Ic(\"&result[flatIndex]\", \"updateValue\", this.type) : \"atomicStore(&result[flatIndex], bitcast(updateValue));\"}\n }\n }`;\n }\n};\nfunction kne(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { indices: n, updates: s } = e, { shape: a } = o, { sliceRank: i, numUpdates: p, sliceSize: u, strides: c, outputSize: l } = S.calculateShapes(s, n, a), m = [l / u, u];\n if (l === 0)\n return t10.makeTensorInfo(a, n.dtype);\n let d = me({ inputs: { x: n }, backend: t10, attrs: { shape: [p, i] } }), f = me({ inputs: { x: s }, backend: t10, attrs: { shape: [p, u] } }), h = f.dtype, g = fr({ backend: t10, attrs: { shape: m, value: 0, dtype: h } }), x = y.sizeFromShape(f.shape), b = [{ type: \"int32\", data: [i] }, { type: \"int32\", data: c }, { type: \"int32\", data: [x] }], C = new Hi(f.shape, i, d.shape.length, f.shape.length, c, m, h), w = t10.runWebGPUProgram(C, [f, d], h, b, g), k = me({ inputs: { x: w }, backend: t10, attrs: { shape: a } });\n return t10.disposeData(d.dataId), t10.disposeData(f.dataId), t10.disposeData(w.dataId), k;\n}\nvar $B = { kernelName: Wn, backendName: \"webgpu\", kernelFunc: kne };\nvar kx = class {\n constructor(e, t10) {\n this.outputShape = [], this.variableNames = [\"sortedSequence\", \"values\"], this.uniforms = \"numInputs : i32,\", this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = e, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.side = t10, this.shaderKey = `search_sorted_${t10}`;\n }\n getUserCode() {\n return `\n fn findBound(batch: i32, value: f32) -> i32 {\n var left = i32(0);\n var right = uniforms.numInputs;\n while (left < right) {\n var mid = (left + right) / 2;\n if (getSortedSequence(batch, mid) ${this.side === \"left\" ? \"<\" : \"<=\"} value) {\n left = mid + 1;\n } else {\n right = mid;\n }\n }\n return right;\n }\n\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let coords = getCoordsFromIndex(index);\n let value = getValuesByOutputIndex(index);\n setOutputAtIndexI32(index, findBound(coords[0], value));\n }\n }\n `;\n }\n};\nfunction Nne(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { sortedSequence: n, values: s } = e, { side: a } = o, i = new kx([s.shape[0], s.shape[1]], a), p = [{ type: \"int32\", data: [n.shape[1]] }];\n return t10.runWebGPUProgram(i, [n, s], \"int32\", p);\n}\nvar EB = { kernelName: fi, backendName: \"webgpu\", kernelFunc: Nne };\nvar Nx = class {\n constructor(e, t10, o) {\n this.variableNames = [\"c\", \"a\", \"b\"], this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = t10, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.cRank = e, this.rank = o, this.shaderKey = \"select\";\n }\n getUserCode() {\n let e, t10;\n if (this.rank > 4)\n throw Error(`Where for rank ${this.rank} is not yet supported`);\n if (this.rank === 1)\n t10 = \"resRC\", e = \"resRC\";\n else {\n let n = [\"resRC.x\", \"resRC.y\", \"resRC.z\", \"resRC.w\"], s = [], a = [];\n for (let i = 0; i < this.outputShape.length; i++)\n a.push(`${n[i]}`), i < this.cRank && s.push(`${n[i]}`);\n e = s.join(), t10 = a.join();\n }\n return `\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let resRC = getCoordsFromIndex(index);\n let cVal = getC(${e});\n if (cVal >= 1.0) {\n setOutputAtIndex(index, getA(${t10}));\n } else {\n setOutputAtIndex(index, getB(${t10}));\n }\n }\n }\n `;\n }\n};\nfunction Tne(r) {\n let { inputs: e, backend: t10 } = r, { condition: o, t: n, e: s } = e, a = new Nx(o.shape.length, n.shape, n.shape.length);\n return t10.runWebGPUProgram(a, [o, n, s], dt(n.dtype, s.dtype));\n}\nvar AB = { kernelName: $s, backendName: \"webgpu\", kernelFunc: Tne };\nvar _ne = xe({ opType: X.SELU });\nvar RB = { kernelName: Ca, backendName: \"webgpu\", kernelFunc: _ne };\nvar $ne = xe({ opType: X.SIGMOID });\nvar DB = { kernelName: Gn, backendName: \"webgpu\", kernelFunc: $ne };\nvar Ene = xe({ opType: X.SIGN });\nvar FB = { kernelName: wa, backendName: \"webgpu\", kernelFunc: Ene };\nvar Ane = xe({ opType: X.SIN });\nvar OB = { kernelName: Un, backendName: \"webgpu\", kernelFunc: Ane };\nvar Rne = xe({ opType: X.SINH });\nvar PB = { kernelName: Sa, backendName: \"webgpu\", kernelFunc: Rne };\nvar $I = Ze({ opType: ge.SUB, cpuKernelImpl: wM, supportsComplex: true });\nvar MB = { kernelName: Yn, backendName: \"webgpu\", kernelFunc: $I };\nfunction Dne(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { logits: n } = e, { dim: s } = o, a = y.parseAxisParam([s], n.shape), i = Hl({ inputs: { x: n }, backend: t10, attrs: { reductionIndices: a, keepDims: false } }), p = S.expandShapeToKeepDim(i.shape, a), u = me({ inputs: { x: i }, backend: t10, attrs: { shape: p } }), c = $I({ inputs: { a: n, b: u }, backend: t10 }), l = vI({ inputs: { x: c }, backend: t10 }), m = ql({ inputs: { x: l }, backend: t10, attrs: { axis: a, keepDims: false } }), d = me({ inputs: { x: m }, backend: t10, attrs: { shape: p } }), f = _I({ inputs: { a: l, b: d }, backend: t10 });\n return t10.disposeData(i.dataId), t10.disposeData(u.dataId), t10.disposeData(c.dataId), t10.disposeData(l.dataId), t10.disposeData(m.dataId), t10.disposeData(d.dataId), f;\n}\nvar LB = { kernelName: qn, backendName: \"webgpu\", kernelFunc: Dne };\nvar Fne = xe({ opType: X.SOFTPLUS });\nvar BB = { kernelName: Ia, backendName: \"webgpu\", kernelFunc: Fne };\nvar One = (r) => {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { blockShape: s, paddings: a } = o;\n y.assert(n.shape.length <= 4, () => \"spaceToBatchND for rank > 4 with a WebGPU backend not implemented yet\");\n let i = s.reduce((x, b) => x * b), p = [[0, 0]];\n p.push(...a);\n for (let x = 1 + s.length; x < n.shape.length; ++x)\n p.push([0, 0]);\n let u = [], c = TI({ inputs: { x: n }, backend: t10, attrs: { paddings: p, constantValue: 0 } }), l = S.getReshaped(c.shape, s, i, false), m = S.getPermuted(l.length, s.length, false), d = S.getReshapedPermuted(c.shape, s, i, false), f = me({ inputs: { x: c }, backend: t10, attrs: { shape: l } }), h = Nr({ inputs: { x: f }, backend: t10, attrs: { perm: m } }), g = me({ inputs: { x: h }, backend: t10, attrs: { shape: d } });\n return u.push(c), u.push(f), u.push(h), u.forEach((x) => t10.disposeData(x.dataId)), g;\n};\nvar VB = { kernelName: As, backendName: \"webgpu\", kernelFunc: One };\nvar Tx = class {\n constructor(e, t10) {\n this.variableNames = [\"A\"], this.workgroupSize = [64, 1, 1], this.size = true;\n let o = new Array(e.length);\n for (let n = 0; n < o.length; n++)\n o[n] = e[n] * t10[n];\n this.outputShape = o, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.rank = this.outputShape.length, this.shaderKey = \"tile\";\n }\n getUserCode() {\n let e = Pne(this.rank, \"uniforms.\");\n return `\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let resRC = getCoordsFromIndex(index);\n setOutputAtIndex(index, getA(${e}));\n }\n }\n `;\n }\n};\nfunction Pne(r, e = \"\") {\n if (r >= 5)\n throw Error(`Tile for rank ${r} is not yet supported`);\n if (r === 1)\n return `(resRC % ${e}aShape)`;\n let t10 = [\"resRC.x\", \"resRC.y\", \"resRC.z\", \"resRC.w\"], o = [];\n for (let n = 0; n < r; n++)\n o.push(`(${t10[n]} % ${e}aShape[${n}])`);\n return o.join();\n}\nfunction EI(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { reps: s } = o;\n if (t10.shouldExecuteOnCPU([n]) || n.dtype === \"string\" || n.shape.length >= 5) {\n let p = t10.readSync(n.dataId), u = n.dtype === \"string\" ? p.map((m) => y.decodeString(m)) : p, c = le(n.shape, n.dtype, u), l = IM(c, s);\n return t10.makeTensorInfo(l.shape, l.dtype, l.values);\n }\n let a = new Tx(n.shape, s);\n return t10.runWebGPUProgram(a, [n], n.dtype);\n}\nvar zB = { kernelName: to, backendName: \"webgpu\", kernelFunc: EI };\nfunction Mne(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { sparseIndices: n, sparseValues: s, defaultValue: a } = e, { outputShape: i } = o, { sliceRank: p, numUpdates: u, sliceSize: c, strides: l, outputSize: m } = S.calculateShapes(s, n, i), d = false;\n if (s.dtype === \"string\") {\n let A = t10.bufferSync(n), R = t10.bufferSync(s), D = y.decodeString(t10.readSync(a.dataId)[0]), P = xM(A, R, i, m, c, u, p, l, D, d);\n return t10.makeTensorInfo(i, P.dtype, P.values);\n }\n let f = [m / c, c], h = me({ inputs: { x: n }, backend: t10, attrs: { shape: [u, p] } }), g = s.shape.length ? me({ inputs: { x: s }, backend: t10, attrs: { shape: [u, c] } }) : Dt({ inputs: { x: s }, backend: t10 }), x = g.dtype, b = t10.makeTensorInfo([], x, y.makeZerosTypedArray(1, x)), C = me({ inputs: { x: a }, backend: t10, attrs: { shape: Array(f.length).fill(1) } }), w = EI({ inputs: { x: C }, backend: t10, attrs: { reps: f } }), k = y.sizeFromShape([u, c]), _ = [{ type: \"int32\", data: [p] }, { type: \"int32\", data: l }, { type: \"int32\", data: [k] }];\n switch (u) {\n case 0:\n break;\n case 1:\n {\n let A = new Hi([u, c], p, h.shape.length, g.shape.length, l, f, x, d);\n t10.runWebGPUProgram(A, [g, h], x, _, w);\n }\n break;\n default:\n {\n let A = new Hi([u, c], p, h.shape.length, b.shape.length, l, f, x, d);\n t10.runWebGPUProgram(A, [b, h], x, _, w);\n }\n {\n let A = new Hi([u, c], p, h.shape.length, g.shape.length, l, f, x);\n t10.runWebGPUProgram(A, [g, h], x, _, w);\n }\n }\n let E = me({ inputs: { x: w }, backend: t10, attrs: { shape: i } });\n return t10.disposeData(h.dataId), t10.disposeData(g.dataId), t10.disposeData(C.dataId), t10.disposeData(b.dataId), t10.disposeData(w.dataId), E;\n}\nvar WB = { kernelName: yi, backendName: \"webgpu\", kernelFunc: Mne };\nfunction Lne(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { numOrSizeSplits: s, axis: a } = o, i = y.parseAxisParam(a, n.shape)[0], p = S.prepareSplitSize(n, s, i), u = n.shape.length, c = new Array(u).fill(0), l = n.shape.slice();\n return p.map((m) => {\n let d = [...l];\n d[i] = m;\n let f = fs({ inputs: { x: n }, backend: t10, attrs: { begin: c, size: d } });\n return c[i] += m, f;\n });\n}\nvar UB = { kernelName: Rs, backendName: \"webgpu\", kernelFunc: Lne };\nvar Bne = xe({ opType: X.SQRT });\nvar GB = { kernelName: Hn, backendName: \"webgpu\", kernelFunc: Bne };\nvar HB = { kernelName: bi, backendName: \"webgpu\", kernelFunc: ({ inputs: r, backend: e }) => {\n let { x: t10 } = r, o = e, n = new Hr(t10.shape, X.SQUARE);\n return o.runWebGPUProgram(n, [t10], t10.dtype);\n} };\nvar Vne = Ze({ opType: ge.SQUARED_DIFFERENCE });\nvar KB = { kernelName: jn, backendName: \"webgpu\", kernelFunc: Vne };\nfunction zne({ inputs: r, attrs: e, backend: t10 }) {\n let { x: o } = r, n = new Hr(o.shape, X.STEP, \"stepAlpha : f32,\"), s = [{ type: \"float32\", data: [e.alpha] }];\n return t10.runWebGPUProgram(n, [o], o.dtype, s);\n}\nvar qB = { kernelName: fo, backendName: \"webgpu\", kernelFunc: zne };\nvar _x = class {\n constructor(e) {\n this.variableNames = [\"x\"], this.workPerThread = 1, this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = e, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize, [this.workPerThread, 1, 1]);\n let t10 = Rt(this.outputShape.length);\n this.uniforms = `begin : ${t10}, strides : ${t10}, `, this.shaderKey = \"stridedSlice\";\n }\n getUserCode() {\n let e = this.outputShape.length, t10 = \"\";\n if (e === 1)\n t10 = \"coords * uniforms.strides + uniforms.begin\";\n else {\n let n = 0;\n t10 = this.outputShape.map((s, a) => (n++, this.outputShape.length === 1 ? `coords * uniforms.strides[${a}] + uniforms.begin[${a}]` : `coords[${n - 1}] * uniforms.strides[${a}] + uniforms.begin[${a}]`)).join(\",\");\n }\n return `\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let coords = getCoordsFromIndex(index);\n setOutputAtIndex(index, getX(${t10}));\n }\n }\n `;\n }\n};\nfunction Wne(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { begin: s, end: a, strides: i, beginMask: p, endMask: u, ellipsisMask: c, newAxisMask: l, shrinkAxisMask: m } = o, { finalShapeSparse: d, finalShape: f, isIdentity: h, sliceDim0: g, isSimpleSlice: x, begin: b, end: C, strides: w } = ut.sliceInfo(n.shape, s, a, i, p, u, c, l, m), k;\n if (h)\n k = me({ inputs: { x: n }, backend: t10, attrs: { shape: f } });\n else if (g || x) {\n y.assert(n.shape.length >= 1, () => `Input must have rank at least 1, got: ${n.shape.length}`);\n let _ = ut.computeOutShape(b, C, w), E = fs({ inputs: { x: n }, backend: t10, attrs: { begin: b, size: _ } });\n k = me({ inputs: { x: E }, backend: t10, attrs: { shape: f } }), t10.disposeData(E.dataId);\n } else if (t10.shouldExecuteOnCPU([n])) {\n let E = t10.readSync(n.dataId), A = le(n.shape, n.dtype, E), R = CM(d, A, w, b);\n k = t10.makeTensorInfo(f, n.dtype, R.values);\n } else {\n let E = new _x(d), A = [{ type: \"int32\", data: b }, { type: \"int32\", data: w }], R = t10.runWebGPUProgram(E, [n], n.dtype, A);\n k = me({ inputs: { x: R }, backend: t10, attrs: { shape: f } }), t10.disposeData(R.dataId);\n }\n return k;\n}\nvar jB = { kernelName: Xn, backendName: \"webgpu\", kernelFunc: Wne };\nfunction Une(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { separator: n, nGramWidths: s, leftPad: a, rightPad: i, padWidth: p, preserveShortSequences: u } = o, { data: c, dataSplits: l } = e, m = t10.readSync(c.dataId), d = t10.readSync(l.dataId), [f, h] = SM(m, d, n, s, a, i, p, u);\n return [t10.makeTensorInfo([f.length], \"string\", f), t10.makeTensorInfo(l.shape, \"int32\", h)];\n}\nvar XB = { kernelName: Ds, backendName: \"webgpu\", kernelFunc: Une };\nvar Gne = xe({ opType: X.TAN });\nvar YB = { kernelName: Qn, backendName: \"webgpu\", kernelFunc: Gne };\nvar Hne = xe({ opType: X.TANH });\nvar QB = { kernelName: Zn, backendName: \"webgpu\", kernelFunc: Hne };\nvar $x = class {\n constructor(e) {\n this.variableNames = [\"x\", \"indices\"], this.workgroupSize = [256, 1, 1], this.size = true, this.outputShape = e, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.uniforms = `inputSize : i32, firstPass : i32, negativeInf : f32,\n dir : i32, inc : i32,`, this.shaderKey = \"swap\";\n }\n getUserCode() {\n return `\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let outC = getCoordsFromIndex(index);\n let batch = outC[0];\n let elemIdx = outC[1];\n // We compare elements pair-wise within a group of size 2 * inc.\n // The comparing rule for each group alternates between ascending\n // and descending. Within each group, we compare each pair at\n // positions i and i+inc. To decide whether an element at position i\n // is x0 or x1, we mod it by 2 * inc, if the result is smaller than\n // inc, it is in the first half of the group, we denote it as x0,\n // otherwise we denote it as x1.\n // For example, as shown in the Bitonic top K paper referenced\n // above, Figure5(a) shows that element[1] is in the second half of\n // the group when group size is 2, but it is in the first half of\n // the group when group size is 4.\n let isFirstInPair = elemIdx % (2 * uniforms.inc) < uniforms.inc;\n var i = 0;\n if (isFirstInPair) {\n i = elemIdx;\n } else {\n i = elemIdx - uniforms.inc;\n }\n\n var i0 = 0;\n if (uniforms.firstPass == 1) {\n i0 = i;\n } else {\n i0 = i32(getIndices(batch, i));\n }\n\n var i1 = 0;\n if (uniforms.firstPass == 1) {\n i1 = i + uniforms.inc;\n } else {\n i1 = i32(getIndices(batch, i + uniforms.inc));\n }\n\n var x0 = f32(0.0);\n var x1 = f32(0.0);\n if (i0 < uniforms.inputSize) {\n x0 = getX(batch, i0);\n } else {\n x0 = uniforms.negativeInf;\n }\n if (i1 < uniforms.inputSize) {\n x1 = getX(batch, i1);\n } else {\n x1 = uniforms.negativeInf;\n }\n\n let reverse = elemIdx % (2 * uniforms.dir) >= uniforms.dir;\n let isGreater = x0 > x1 || (x0 == x1 && i1 > i0);\n if (reverse == isGreater) {\n // Elements in opposite order of direction\n let iTemp = i0;\n i0 = i1;\n i1 = iTemp;\n }\n if (isFirstInPair) {\n setOutputAtIndex(index, f32(i0));\n } else {\n setOutputAtIndex(index, f32(i1));\n }\n }\n }\n `;\n }\n};\nvar Ex = class {\n constructor(e) {\n this.variableNames = [\"x\", \"indices\"], this.workgroupSize = [256, 1, 1], this.size = true, this.outputShape = e, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.uniforms = \"inputSize : i32, firstPass : i32, k : i32,\", this.shaderKey = \"merge\";\n }\n getUserCode() {\n return `\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let outC = getCoordsFromIndex(index);\n let batch = outC[0];\n let elemIdx = outC[1];\n // The output size is half of the previous size.\n // If the previous sequence is | | | | _ _ _ _ | | | | _ _ _ _\n // (k=4), we only need to output the indices at positions |, the\n // indices at positions _ can be thrown away, see Figure5(b) After\n // Phase 2 (Merge phase) in the Bitonic Top K paper referenced\n // above.\n // For example, the paper shows we only need to output the orange\n // bars. The output sequence should look like this | | | | | | | |.\n // Because the sequence is halved, to map the output index back to\n // the previous sequence to find the corresponding value, we need\n // to double the index. When we double the index, we basically\n // interpolate a position, so 2i looks like\n // | _ | _ | _ | _ | _ | _ | _. We move the | to the first k\n // position of each 2k positions by - elemIdx % k. E.g. for output\n // at index 4,5,6,7, we want to get the corresponding element at\n // original index 8,9,10,11, for output at index 8,9,10,11,\n // we want to get the corresponding element at original index\n // 16,17,18,19, so on and so forth.\n\n var i = 0;\n if (elemIdx < uniforms.k) {\n i = elemIdx;\n } else {\n i = elemIdx * 2 - elemIdx % uniforms.k;\n }\n var i0 = 0;\n if (uniforms.firstPass == 1) {\n i0 = i;\n } else {\n i0 = i32(getIndices(batch, i));\n }\n var i1 = 0;\n if (uniforms.firstPass == 1) {\n i1 = i + uniforms.k;\n } else {\n i1 = i32(getIndices(batch, i + uniforms.k));\n }\n\n let x0 = getX(batch, i0);\n var x1 = f32(0.0);\n if (i1 < uniforms.inputSize) {\n x1 = getX(batch, i1);\n } else {\n x1 = x0;\n }\n\n if (x0 >= x1) {\n setOutputAtIndex(index, f32(i0));\n } else {\n setOutputAtIndex(index, f32(i1));\n }\n }\n }\n `;\n }\n};\nfunction Rc(r, e) {\n e !== null && r.disposeData(e.dataId);\n}\nfunction ZB(r) {\n let e = 1;\n for (; e < r; )\n e *= 2;\n return e;\n}\nfunction Kne(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { x: n } = e, { k: s, sorted: a } = o, i = n.shape, p = i[i.length - 1];\n if (t10.shouldExecuteOnCPU([n])) {\n let k = t10.readSync(n.dataId), [_, E] = vM(k, i, n.dtype, s, a);\n return [t10.makeTensorInfo(_.shape, _.dtype, _.values), t10.makeTensorInfo(E.shape, E.dtype, E.values)];\n }\n if (s === 0)\n return i[i.length - 1] = 0, [t10.makeTensorInfo(i, n.dtype, []), t10.makeTensorInfo(i, \"int32\", [])];\n if (p === 1)\n return [n, fr({ attrs: { shape: i, dtype: \"int32\", value: 0 }, backend: t10 })];\n let c = y.sizeFromShape(i) / p, l = me({ inputs: { x: n }, attrs: { shape: [c, p] }, backend: t10 }), m = ZB(s), d = ZB(p), f = null, h = () => f === null ? [l, l] : [l, f], g = (k, _, E) => {\n let A = h(), R = new $x(E), P = [{ type: \"int32\", data: [p] }, { type: \"int32\", data: [f === null ? 1 : 0] }, { type: \"float32\", data: [Number.NEGATIVE_INFINITY] }, { type: \"int32\", data: [k] }, { type: \"int32\", data: [_] }], M = f;\n f = t10.runWebGPUProgram(R, A, \"int32\", P), Rc(t10, M);\n };\n for (let k = 1; k < m; k *= 2) {\n let _ = k * 2;\n for (let E = k; E >= 1; E /= 2)\n g(_, E, [c, d]);\n }\n for (let k = d; k > m; k /= 2) {\n let _ = h(), E = new Ex([c, k / 2]), R = [{ type: \"int32\", data: [p] }, { type: \"int32\", data: [f === null ? 1 : 0] }, { type: \"int32\", data: [m] }], D = f;\n f = t10.runWebGPUProgram(E, _, \"int32\", R), Rc(t10, D);\n let P = m / 2, M = P * 2;\n for (let L = P; L >= 1; L /= 2)\n g(M, L, f.shape);\n }\n let x = f;\n f = fs({ inputs: { x: f }, backend: t10, attrs: { begin: 0, size: [c, s] } }), Rc(t10, x);\n let b = NI({ inputs: { x: l, indices: f }, backend: t10, attrs: { axis: 1, batchDims: 1 } });\n Rc(t10, l);\n let C = i.slice(0, -1);\n C.push(s), x = f, f = me({ inputs: { x: f }, attrs: { shape: C }, backend: t10 }), Rc(t10, x);\n let w = b;\n return b = me({ inputs: { x: b }, attrs: { shape: C }, backend: t10 }), Rc(t10, w), [b, f];\n}\nvar JB = { kernelName: Jn, backendName: \"webgpu\", kernelFunc: Kne };\nvar Ax = class {\n constructor(e) {\n this.variableNames = [\"Image\", \"Transforms\"], this.uniforms = \"interpolationModeId : i32, fillModeId : i32, fillValue : f32,\", this.workgroupSize = [64, 1, 1], this.size = true, this.outputShape = e, this.dispatchLayout = ae(this.outputShape), this.dispatch = Y(this.dispatchLayout, this.outputShape, this.workgroupSize), this.shaderKey = \"transform\";\n }\n getUserCode() {\n return `\n fn mapCoord(outCoord : f32, len : f32) -> f32{\n var inCoord = outCoord;\n if(uniforms.fillModeId == 2) {\n if (inCoord < 0.0) {\n if (len <= 1.0) {\n inCoord = 0.0;\n } else {\n let sz2 = 2.0 * len;\n if (inCoord < sz2) {\n inCoord = sz2 * f32(i32(f32(-inCoord / sz2))) +\n inCoord;\n }\n if (inCoord < -len) {\n inCoord = inCoord + sz2;\n } else {\n inCoord = -inCoord - 1.0;\n }\n }\n } else if (inCoord > len - 1.0) {\n if (len <= 1.0) {\n inCoord = 0.0;\n } else {\n let sz2 = 2.0 * len;\n inCoord = inCoord - sz2 * f32(i32(f32(inCoord / sz2)));\n if (inCoord >= len) {\n inCoord = sz2 - inCoord - 1.0;\n }\n }\n }\n return clamp(inCoord, 0.0, len - 1.0);\n } else if (uniforms.fillModeId == 3) {\n if (inCoord < 0.0) {\n if (len <= 1.0) {\n inCoord = 0.0;\n } else {\n let sz = len - 1.0;\n inCoord = inCoord + len * (f32(i32(f32(-inCoord / sz))) + 1.0);\n }\n } else if (inCoord > len - 1.0) {\n if (len <= 1.0) {\n inCoord = 0.0;\n } else {\n let sz = len - 1.0;\n inCoord = inCoord - len * f32(i32(f32(inCoord / sz)));\n }\n }\n return clamp(inCoord, 0.0, len - 1.0);\n } else if (uniforms.fillModeId == 4) {\n return clamp(outCoord, 0.0, len - 1.0);\n }\n return outCoord;\n }\n fn readWithFillValue(batch : i32, coordY : i32, coordX : i32,\n channel : i32) -> f32 {\n var outputValue : f32;\n if (0 <= coordY && coordY < uniforms.imageShape[1] && 0 <= coordX && coordX < uniforms.imageShape[2]) {\n outputValue = getImage(batch, coordY, coordX, channel);\n } else {\n outputValue = uniforms.fillValue;\n }\n return outputValue;\n }\n\n ${Q(\"index\")} {\n if (index < uniforms.size) {\n let coords = getCoordsFromIndex(index);\n var outputValue : f32;\n let batch = coords[0];\n let x = coords[2];\n let y = coords[1];\n let channel = coords[3];\n let xf = f32(x);\n let yf = f32(y);\n let a1 = getTransforms(batch, 0);\n let a2 = getTransforms(batch, 1);\n let a3 = getTransforms(batch, 2);\n let b1 = getTransforms(batch, 3);\n let b2 = getTransforms(batch, 4);\n let b3 = getTransforms(batch, 5);\n let c1 = getTransforms(batch, 6);\n let c2 = getTransforms(batch, 7);\n let projection = c1 * xf + c2 * yf + 1.0;\n if (projection == 0.0) {\n outputValue = uniforms.fillValue;\n } else {\n let inX = (a1 * xf + a2 * yf + a3) / projection;\n let inY = (b1 * xf + b2 * yf + b3) / projection;\n let mapX = mapCoord(inX, f32(uniforms.imageShape[2]));\n let mapY = mapCoord(inY, f32(uniforms.imageShape[1]));\n\n if (uniforms.interpolationModeId == 1) {\n let coordY = i32(round(mapY));\n let coordX = i32(round(mapX));\n outputValue = readWithFillValue(batch, coordY, coordX,\n channel);\n } else {\n let yFloor = floor(mapY);\n let xFloor = floor(mapX);\n let yCeil = yFloor + 1.0;\n let xCeil = xFloor + 1.0;\n let valueYFloor = (xCeil - mapX) *\n readWithFillValue(batch, i32(yFloor), i32(xFloor), channel) +\n (mapX - xFloor) *\n readWithFillValue(batch, i32(yFloor), i32(xCeil), channel);\n let valueYCeil = (xCeil - mapX) *\n readWithFillValue(batch, i32(yCeil), i32(xFloor), channel) +\n (mapX - xFloor) *\n readWithFillValue(batch, i32(yCeil), i32(xCeil), channel);\n outputValue = (yCeil - mapY) * valueYFloor +\n (mapY - yFloor) * valueYCeil;\n }\n }\n setOutputAtIndex(index, outputValue);\n }\n }\n `;\n }\n};\nfunction qne(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { image: n, transforms: s } = e, { interpolation: a, fillMode: i, fillValue: p, outputShape: u } = o, [c, l, m, d] = n.shape, [f, h] = u != null ? u : [l, m], g = [c, f, h, d], x = new Ax(g), b = a === \"nearest\" ? 1 : 2, C;\n switch (i) {\n case \"constant\":\n C = 1;\n break;\n case \"reflect\":\n C = 2;\n break;\n case \"wrap\":\n C = 3;\n break;\n case \"nearest\":\n C = 4;\n break;\n default:\n C = 1;\n break;\n }\n let w = [{ type: \"int32\", data: [b] }, { type: \"int32\", data: [C] }, { type: \"float32\", data: [p] }];\n return t10.runWebGPUProgram(x, [n, s], \"float32\", w);\n}\nvar eV = { kernelName: es, backendName: \"webgpu\", kernelFunc: qne };\nfunction jne(r) {\n let { inputs: e, backend: t10, attrs: o } = r, { value: n } = e, { axis: s } = o;\n s < 0 && (s += n.shape.length);\n let a = n, i = a.shape.length, p = n.shape[s], u = new Array(i - 1), c = 0;\n for (let h = 0; h < i; h++)\n h !== s && (u[c++] = a.shape[h]);\n let l = [], m = new Array(i).fill(0), d = a.shape.slice();\n d[s] = 1;\n let f = new Array(p);\n for (let h = 0; h < f.length; h++) {\n m[s] = h;\n let g = fs({ inputs: { x: a }, backend: t10, attrs: { begin: m, size: d } }), x = me({ inputs: { x: g }, backend: t10, attrs: { shape: u } });\n f[h] = x, l.push(g);\n }\n return l.forEach((h) => t10.disposeData(h.dataId)), f;\n}\nvar tV = { kernelName: Fs, backendName: \"webgpu\", kernelFunc: jne };\nvar Xne = [G3, NM, TM, _M, $M, EM, RM, DM, FM, OM, PM, MM, LM, BM, VM, UM, GM, HM, qM, jM, ZM, JM, eL, K3, rL, oL, nL, sL, aL, iL, uL, lL, mL, dL, fL, hL, gL, xL, CL, SL, wL, IL, vL, kL, NL, TL, W3, _L, AL, $L, EL, RL, DL, FL, OL, PL, ML, LL, H3, BL, tL, VL, zL, WL, UL, GL, HL, KL, jL, qL, XL, YL, QL, JL, zM, eB, tB, WM, rB, oB, nB, sB, yL, aB, iB, uB, XM, pB, mB, dB, fB, hB, gB, xB, yB, YM, bB, CB, SB, wB, U3, IB, vB, kB, NB, TB, _B, $B, EB, AB, RB, DB, FB, OB, PB, KM, qB, jB, XB, LB, BB, VB, WB, UB, GB, HB, KB, MB, bL, YB, QB, zB, JB, eV, AM, tV, cB];\nfor (let r of Xne)\n ka(r);\nvar rV = \"4.2.0\";\nvar Yne = \"4.2.0\";\nvar Qne = \"4.2.0\";\nvar Zne = \"4.2.0\";\nvar Jne = \"4.2.0\";\nvar ese = \"0.0.1-alpha.17\";\nvar tse = { tfjs: rV, \"tfjs-core\": rV, \"tfjs-converter\": Yne, \"tfjs-backend-cpu\": Qne, \"tfjs-backend-webgl\": Zne, \"tfjs-backend-wasm\": Jne, \"tfjs-backend-webgpu\": ese };\n\n// src/util/util.ts\nfunction log(...msg) {\n const dt2 = /* @__PURE__ */ new Date();\n const ts2 = `${dt2.getHours().toString().padStart(2, \"0\")}:${dt2.getMinutes().toString().padStart(2, \"0\")}:${dt2.getSeconds().toString().padStart(2, \"0\")}.${dt2.getMilliseconds().toString().padStart(3, \"0\")}`;\n if (msg)\n console.log(ts2, \"Human:\", ...msg);\n}\nfunction join(folder, file) {\n const separator = folder.endsWith(\"/\") ? \"\" : \"/\";\n const skipJoin = file.startsWith(\".\") || file.startsWith(\"/\") || file.startsWith(\"http:\") || file.startsWith(\"https:\") || file.startsWith(\"file:\");\n const path = skipJoin ? `${file}` : `${folder}${separator}${file}`;\n if (!path.toLocaleLowerCase().includes(\".json\"))\n throw new Error(`modelpath error: expecting json file: ${path}`);\n return path;\n}\nvar now = () => {\n if (typeof performance !== \"undefined\")\n return performance.now();\n return parseInt((Number(process.hrtime.bigint()) / 1e3 / 1e3).toString());\n};\nfunction validate(defaults, config3, parent = \"config\", msgs = []) {\n for (const key of Object.keys(config3)) {\n if (typeof config3[key] === \"object\") {\n validate(defaults[key], config3[key], key, msgs);\n } else {\n const defined = defaults && typeof defaults[key] !== \"undefined\";\n if (!defined)\n msgs.push({ reason: \"unknown property\", where: `${parent}.${key} = ${config3[key]}` });\n const same = defaults && typeof defaults[key] === typeof config3[key];\n if (defined && !same)\n msgs.push({ reason: \"property type mismatch\", where: `${parent}.${key} = ${config3[key]}`, expected: typeof defaults[key] });\n }\n }\n if (config3.debug && parent === \"config\" && msgs.length > 0)\n log(\"invalid configuration\", msgs);\n return msgs;\n}\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 return prev;\n }, {});\n}\n\n// src/config.ts\nvar config = {\n backend: \"\",\n modelBasePath: \"\",\n cacheModels: true,\n validateModels: true,\n wasmPath: \"\",\n wasmPlatformFetch: false,\n debug: false,\n async: true,\n warmup: \"full\",\n cacheSensitivity: 0.7,\n skipAllowed: false,\n deallocate: false,\n flags: {},\n softwareKernels: false,\n filter: {\n enabled: true,\n equalization: false,\n width: 0,\n height: 0,\n flip: false,\n return: true,\n autoBrightness: true,\n brightness: 0,\n contrast: 0,\n sharpness: 0,\n blur: 0,\n saturation: 0,\n hue: 0,\n negative: false,\n sepia: false,\n vintage: false,\n kodachrome: false,\n technicolor: false,\n polaroid: false,\n pixelate: 0\n },\n gesture: {\n enabled: true\n },\n face: {\n enabled: true,\n detector: {\n modelPath: \"blazeface.json\",\n rotation: false,\n maxDetected: 1,\n skipFrames: 99,\n skipTime: 2500,\n minConfidence: 0.2,\n minSize: 0,\n iouThreshold: 0.1,\n mask: false,\n return: false\n },\n mesh: {\n enabled: true,\n modelPath: \"facemesh.json\",\n keepInvalid: false\n },\n attention: {\n enabled: false,\n modelPath: \"facemesh-attention.json\"\n },\n iris: {\n enabled: true,\n modelPath: \"iris.json\"\n },\n emotion: {\n enabled: true,\n minConfidence: 0.1,\n skipFrames: 99,\n skipTime: 1500,\n modelPath: \"emotion.json\"\n },\n description: {\n enabled: true,\n modelPath: \"faceres.json\",\n skipFrames: 99,\n skipTime: 3e3,\n minConfidence: 0.1\n },\n antispoof: {\n enabled: false,\n skipFrames: 99,\n skipTime: 4e3,\n modelPath: \"antispoof.json\"\n },\n liveness: {\n enabled: false,\n skipFrames: 99,\n skipTime: 4e3,\n modelPath: \"liveness.json\"\n }\n },\n body: {\n enabled: true,\n modelPath: \"movenet-lightning.json\",\n maxDetected: -1,\n minConfidence: 0.3,\n skipFrames: 1,\n skipTime: 200\n },\n hand: {\n enabled: true,\n rotation: true,\n skipFrames: 99,\n skipTime: 1e3,\n minConfidence: 0.5,\n iouThreshold: 0.2,\n maxDetected: -1,\n landmarks: true,\n detector: {\n modelPath: \"handtrack.json\"\n },\n skeleton: {\n modelPath: \"handlandmark-lite.json\"\n }\n },\n object: {\n enabled: false,\n modelPath: \"centernet.json\",\n minConfidence: 0.2,\n iouThreshold: 0.4,\n maxDetected: 10,\n skipFrames: 99,\n skipTime: 2e3\n },\n segmentation: {\n enabled: false,\n modelPath: \"rvm.json\",\n ratio: 0.5,\n mode: \"default\"\n }\n};\n\n// src/image/imagefxshaders.ts\nvar vertexIdentity = `\n precision highp float;\n attribute vec2 pos;\n attribute vec2 uv;\n varying vec2 vUv;\n uniform float flipY;\n void main(void) {\n vUv = uv;\n gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);\n }\n`;\nvar colorMatrixWithAlpha = `\n precision highp float;\n varying vec2 vUv;\n uniform sampler2D texture;\n uniform float m[20];\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`;\nvar colorMatrixWithoutAlpha = `\n precision highp float;\n varying vec2 vUv;\n uniform sampler2D texture;\n uniform float m[20];\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`;\nvar pixelate = `\n precision highp float;\n varying vec2 vUv;\n uniform vec2 size;\n uniform sampler2D texture;\n vec2 pixelate(vec2 coord, vec2 size) {\n return floor( coord / size ) * size;\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`;\nvar blur = `\n precision highp float;\n varying vec2 vUv;\n uniform sampler2D texture;\n uniform vec2 px;\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`;\nvar convolution = `\n precision highp float;\n varying vec2 vUv;\n uniform sampler2D texture;\n uniform vec2 px;\n uniform float m[9];\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 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 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 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`;\n\n// src/image/imagefx.ts\nvar collect = (source, prefix, collection) => {\n const r = new RegExp(\"\\\\b\" + prefix + \" \\\\w+ (\\\\w+)\", \"ig\");\n source.replace(r, (match2, name) => {\n collection[name] = 0;\n return match2;\n });\n};\nvar GLProgram = class {\n constructor(gl2, vertexSource, fragmentSource) {\n __publicField(this, \"uniform\", {});\n __publicField(this, \"attribute\", {});\n __publicField(this, \"gl\");\n __publicField(this, \"id\");\n __publicField(this, \"compile\", (source, type) => {\n const shader = this.gl.createShader(type);\n if (!shader) {\n log(\"filter: could not create shader\");\n return null;\n }\n this.gl.shaderSource(shader, source);\n this.gl.compileShader(shader);\n if (!this.gl.getShaderParameter(shader, this.gl.COMPILE_STATUS)) {\n log(`filter: gl compile failed: ${this.gl.getShaderInfoLog(shader) || \"unknown\"}`);\n return null;\n }\n return shader;\n });\n this.gl = gl2;\n const vertexShader = this.compile(vertexSource, this.gl.VERTEX_SHADER);\n const fragmentShader = this.compile(fragmentSource, this.gl.FRAGMENT_SHADER);\n this.id = this.gl.createProgram();\n if (!vertexShader || !fragmentShader)\n return;\n if (!this.id) {\n log(\"filter: could not create webgl program\");\n return;\n }\n this.gl.attachShader(this.id, vertexShader);\n this.gl.attachShader(this.id, fragmentShader);\n this.gl.linkProgram(this.id);\n if (!this.gl.getProgramParameter(this.id, this.gl.LINK_STATUS)) {\n log(`filter: gl link failed: ${this.gl.getProgramInfoLog(this.id) || \"unknown\"}`);\n return;\n }\n this.gl.useProgram(this.id);\n collect(vertexSource, \"attribute\", this.attribute);\n for (const a in this.attribute)\n this.attribute[a] = this.gl.getAttribLocation(this.id, a);\n collect(vertexSource, \"uniform\", this.uniform);\n collect(fragmentSource, \"uniform\", this.uniform);\n for (const u in this.uniform)\n this.uniform[u] = this.gl.getUniformLocation(this.id, u);\n }\n};\nfunction GLImageFilter() {\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 vertexBuffer = null;\n let currentProgram = null;\n const fxcanvas = canvas(100, 100);\n const shaderProgramCache = {};\n const DRAW = { INTERMEDIATE: 1 };\n const gl2 = fxcanvas.getContext(\"webgl\");\n if (!gl2) {\n log(\"filter: cannot get webgl context\");\n return;\n }\n this.gl = gl2;\n function resize(width, height) {\n if (width === fxcanvas.width && height === fxcanvas.height)\n return;\n fxcanvas.width = width;\n fxcanvas.height = height;\n if (!vertexBuffer) {\n const 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]);\n vertexBuffer = gl2.createBuffer();\n gl2.bindBuffer(gl2.ARRAY_BUFFER, vertexBuffer);\n gl2.bufferData(gl2.ARRAY_BUFFER, vertices, gl2.STATIC_DRAW);\n gl2.pixelStorei(gl2.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n gl2.viewport(0, 0, fxcanvas.width, fxcanvas.height);\n tempFramebuffers = [null, null];\n }\n function createFramebufferTexture(width, height) {\n const fbo = gl2.createFramebuffer();\n gl2.bindFramebuffer(gl2.FRAMEBUFFER, fbo);\n const renderbuffer = gl2.createRenderbuffer();\n gl2.bindRenderbuffer(gl2.RENDERBUFFER, renderbuffer);\n const texture = gl2.createTexture();\n gl2.bindTexture(gl2.TEXTURE_2D, texture);\n gl2.texImage2D(gl2.TEXTURE_2D, 0, gl2.RGBA, width, height, 0, gl2.RGBA, gl2.UNSIGNED_BYTE, null);\n gl2.texParameteri(gl2.TEXTURE_2D, gl2.TEXTURE_MAG_FILTER, gl2.LINEAR);\n gl2.texParameteri(gl2.TEXTURE_2D, gl2.TEXTURE_MIN_FILTER, gl2.LINEAR);\n gl2.texParameteri(gl2.TEXTURE_2D, gl2.TEXTURE_WRAP_S, gl2.CLAMP_TO_EDGE);\n gl2.texParameteri(gl2.TEXTURE_2D, gl2.TEXTURE_WRAP_T, gl2.CLAMP_TO_EDGE);\n gl2.framebufferTexture2D(gl2.FRAMEBUFFER, gl2.COLOR_ATTACHMENT0, gl2.TEXTURE_2D, texture, 0);\n gl2.bindTexture(gl2.TEXTURE_2D, null);\n gl2.bindFramebuffer(gl2.FRAMEBUFFER, null);\n return { fbo, texture };\n }\n function getTempFramebuffer(index2) {\n tempFramebuffers[index2] = tempFramebuffers[index2] || createFramebufferTexture(fxcanvas.width, fxcanvas.height);\n return tempFramebuffers[index2];\n }\n function draw(flags = 0) {\n if (!currentProgram)\n return;\n let source = null;\n let target = null;\n let flipY = false;\n if (drawCount === 0)\n source = sourceTexture;\n else\n source = getTempFramebuffer(currentFramebufferIndex).texture || null;\n drawCount++;\n if (lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n target = null;\n flipY = drawCount % 2 === 0;\n } else {\n currentFramebufferIndex = (currentFramebufferIndex + 1) % 2;\n target = getTempFramebuffer(currentFramebufferIndex).fbo || null;\n }\n gl2.bindTexture(gl2.TEXTURE_2D, source);\n gl2.bindFramebuffer(gl2.FRAMEBUFFER, target);\n gl2.uniform1f(currentProgram.uniform[\"flipY\"], flipY ? -1 : 1);\n gl2.drawArrays(gl2.TRIANGLES, 0, 6);\n }\n function compileShader(fragmentSource) {\n if (shaderProgramCache[fragmentSource]) {\n currentProgram = shaderProgramCache[fragmentSource];\n gl2.useProgram((currentProgram ? currentProgram.id : null) || null);\n return currentProgram;\n }\n currentProgram = new GLProgram(gl2, vertexIdentity, fragmentSource);\n if (!currentProgram) {\n log(\"filter: could not get webgl program\");\n return null;\n }\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl2.enableVertexAttribArray(currentProgram.attribute[\"pos\"]);\n gl2.vertexAttribPointer(currentProgram.attribute[\"pos\"], 2, gl2.FLOAT, false, vertSize, 0 * floatSize);\n gl2.enableVertexAttribArray(currentProgram.attribute[\"uv\"]);\n gl2.vertexAttribPointer(currentProgram.attribute[\"uv\"], 2, gl2.FLOAT, false, vertSize, 2 * floatSize);\n shaderProgramCache[fragmentSource] = currentProgram;\n return currentProgram;\n }\n const filter = {\n colorMatrix: (matrix) => {\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\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 ? colorMatrixWithoutAlpha : colorMatrixWithAlpha;\n const program = compileShader(shader);\n if (!program)\n return;\n gl2.uniform1fv(program.uniform[\"m\"], m);\n draw();\n },\n brightness: (brightness) => {\n const b = (brightness || 0) + 1;\n filter.colorMatrix([\n b,\n 0,\n 0,\n 0,\n 0,\n 0,\n b,\n 0,\n 0,\n 0,\n 0,\n 0,\n b,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ]);\n },\n saturation: (amount) => {\n const x = (amount || 0) * 2 / 3 + 1;\n const y6 = (x - 1) * -0.5;\n filter.colorMatrix([\n x,\n y6,\n y6,\n 0,\n 0,\n y6,\n x,\n y6,\n 0,\n 0,\n y6,\n y6,\n x,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ]);\n },\n desaturate: () => {\n filter.saturation(-1);\n },\n contrast: (amount) => {\n const v10 = (amount || 0) + 1;\n const o = -128 * (v10 - 1);\n filter.colorMatrix([\n v10,\n 0,\n 0,\n 0,\n o,\n 0,\n v10,\n 0,\n 0,\n o,\n 0,\n 0,\n v10,\n 0,\n o,\n 0,\n 0,\n 0,\n 1,\n 0\n ]);\n },\n negative: () => {\n filter.contrast(-2);\n },\n hue: (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 filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * -lumR,\n lumG + cos * -lumG + sin * -lumG,\n lumB + cos * -lumB + sin * (1 - lumB),\n 0,\n 0,\n lumR + cos * -lumR + sin * 0.143,\n lumG + cos * (1 - lumG) + sin * 0.14,\n lumB + cos * -lumB + sin * -0.283,\n 0,\n 0,\n lumR + cos * -lumR + sin * -(1 - lumR),\n lumG + cos * -lumG + sin * lumG,\n lumB + cos * (1 - lumB) + sin * lumB,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ]);\n },\n desaturateLuminance: () => {\n filter.colorMatrix([\n 0.2764723,\n 0.929708,\n 0.0938197,\n 0,\n -37.1,\n 0.2764723,\n 0.929708,\n 0.0938197,\n 0,\n -37.1,\n 0.2764723,\n 0.929708,\n 0.0938197,\n 0,\n -37.1,\n 0,\n 0,\n 0,\n 1,\n 0\n ]);\n },\n sepia: () => {\n filter.colorMatrix([\n 0.393,\n 0.7689999,\n 0.18899999,\n 0,\n 0,\n 0.349,\n 0.6859999,\n 0.16799999,\n 0,\n 0,\n 0.272,\n 0.5339999,\n 0.13099999,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ]);\n },\n brownie: () => {\n filter.colorMatrix([\n 0.5997023498159715,\n 0.34553243048391263,\n -0.2708298674538042,\n 0,\n 47.43192855600873,\n -0.037703249837783157,\n 0.8609577587992641,\n 0.15059552388459913,\n 0,\n -36.96841498319127,\n 0.24113635128153335,\n -0.07441037908422492,\n 0.44972182064877153,\n 0,\n -7.562075277591283,\n 0,\n 0,\n 0,\n 1,\n 0\n ]);\n },\n vintagePinhole: () => {\n filter.colorMatrix([\n 0.6279345635605994,\n 0.3202183420819367,\n -0.03965408211312453,\n 0,\n 9.651285835294123,\n 0.02578397704808868,\n 0.6441188644374771,\n 0.03259127616149294,\n 0,\n 7.462829176470591,\n 0.0466055556782719,\n -0.0851232987247891,\n 0.5241648018700465,\n 0,\n 5.159190588235296,\n 0,\n 0,\n 0,\n 1,\n 0\n ]);\n },\n kodachrome: () => {\n filter.colorMatrix([\n 1.1285582396593525,\n -0.3967382283601348,\n -0.03992559172921793,\n 0,\n 63.72958762196502,\n -0.16404339962244616,\n 1.0835251566291304,\n -0.05498805115633132,\n 0,\n 24.732407896706203,\n -0.16786010706155763,\n -0.5603416277695248,\n 1.6014850761964943,\n 0,\n 35.62982807460946,\n 0,\n 0,\n 0,\n 1,\n 0\n ]);\n },\n technicolor: () => {\n filter.colorMatrix([\n 1.9125277891456083,\n -0.8545344976951645,\n -0.09155508482755585,\n 0,\n 11.793603434377337,\n -0.3087833385928097,\n 1.7658908555458428,\n -0.10601743074722245,\n 0,\n -70.35205161461398,\n -0.231103377548616,\n -0.7501899197440212,\n 1.847597816108189,\n 0,\n 30.950940869491138,\n 0,\n 0,\n 0,\n 1,\n 0\n ]);\n },\n polaroid: () => {\n filter.colorMatrix([\n 1.438,\n -0.062,\n -0.062,\n 0,\n 0,\n -0.122,\n 1.378,\n -0.122,\n 0,\n 0,\n -0.016,\n -0.016,\n 1.483,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ]);\n },\n shiftToBGR: () => {\n filter.colorMatrix([\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ]);\n },\n convolution: (matrix) => {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / fxcanvas.width;\n const pixelSizeY = 1 / fxcanvas.height;\n const program = compileShader(convolution);\n if (!program)\n return;\n gl2.uniform1fv(program.uniform[\"m\"], m);\n gl2.uniform2f(program.uniform[\"px\"], pixelSizeX, pixelSizeY);\n draw();\n },\n detectEdges: () => {\n filter.convolution.call(this, [\n 0,\n 1,\n 0,\n 1,\n -4,\n 1,\n 0,\n 1,\n 0\n ]);\n },\n sobelX: () => {\n filter.convolution.call(this, [\n -1,\n 0,\n 1,\n -2,\n 0,\n 2,\n -1,\n 0,\n 1\n ]);\n },\n sobelY: () => {\n filter.convolution.call(this, [\n -1,\n -2,\n -1,\n 0,\n 0,\n 0,\n 1,\n 2,\n 1\n ]);\n },\n sharpen: (amount) => {\n const a = amount || 1;\n filter.convolution.call(this, [\n 0,\n -1 * a,\n 0,\n -1 * a,\n 1 + 4 * a,\n -1 * a,\n 0,\n -1 * a,\n 0\n ]);\n },\n emboss: (size2) => {\n const s = size2 || 1;\n filter.convolution.call(this, [\n -2 * s,\n -1 * s,\n 0,\n -1 * s,\n 1,\n 1 * s,\n 0,\n 1 * s,\n 2 * s\n ]);\n },\n blur: (size2) => {\n const blurSizeX = size2 / 7 / fxcanvas.width;\n const blurSizeY = size2 / 7 / fxcanvas.height;\n const program = compileShader(blur);\n if (!program)\n return;\n gl2.uniform2f(program.uniform[\"px\"], 0, blurSizeY);\n draw(DRAW.INTERMEDIATE);\n gl2.uniform2f(program.uniform[\"px\"], blurSizeX, 0);\n draw();\n },\n pixelate: (size2) => {\n const blurSizeX = size2 / fxcanvas.width;\n const blurSizeY = size2 / fxcanvas.height;\n const program = compileShader(pixelate);\n if (!program)\n return;\n gl2.uniform2f(program.uniform[\"size\"], blurSizeX, blurSizeY);\n draw();\n }\n };\n this.add = function(name) {\n const args = Array.prototype.slice.call(arguments, 1);\n const func = filter[name];\n filterChain.push({ func, args });\n };\n this.reset = function() {\n filterChain = [];\n };\n this.get = function() {\n return filterChain;\n };\n this.apply = function(image) {\n resize(image.width, image.height);\n drawCount = 0;\n if (!sourceTexture)\n sourceTexture = gl2.createTexture();\n gl2.bindTexture(gl2.TEXTURE_2D, sourceTexture);\n gl2.texParameteri(gl2.TEXTURE_2D, gl2.TEXTURE_WRAP_S, gl2.CLAMP_TO_EDGE);\n gl2.texParameteri(gl2.TEXTURE_2D, gl2.TEXTURE_WRAP_T, gl2.CLAMP_TO_EDGE);\n gl2.texParameteri(gl2.TEXTURE_2D, gl2.TEXTURE_MIN_FILTER, gl2.NEAREST);\n gl2.texParameteri(gl2.TEXTURE_2D, gl2.TEXTURE_MAG_FILTER, gl2.NEAREST);\n gl2.texImage2D(gl2.TEXTURE_2D, 0, gl2.RGBA, gl2.RGBA, gl2.UNSIGNED_BYTE, image);\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 return fxcanvas;\n };\n this.draw = function(image) {\n this.add(\"brightness\", 0);\n return this.apply(image);\n };\n}\n\n// src/image/enhance.ts\nasync function histogramEqualization(inputImage) {\n const squeeze = inputImage.shape.length === 4 ? Up(inputImage) : inputImage;\n const rgb3 = Oa(squeeze, 3, 2);\n const min = [rl(rgb3[0]), rl(rgb3[1]), rl(rgb3[2])];\n const max = [Gs(rgb3[0]), Gs(rgb3[1]), Gs(rgb3[2])];\n const absMax = await Promise.all(max.map((channel) => channel.data()));\n const maxValue = Math.max(absMax[0][0], absMax[1][0], absMax[2][0]);\n const maxRange = maxValue > 1 ? 255 : 1;\n const factor = maxRange / maxValue;\n let final;\n if (factor > 1) {\n const sub = [ke(rgb3[0], min[0]), ke(rgb3[1], min[1]), ke(rgb3[2], min[2])];\n const range = [ke(max[0], min[0]), ke(max[1], min[1]), ke(max[2], min[2])];\n const enh = [ne(sub[0], factor), ne(sub[1], factor), ne(sub[2], factor)];\n const stack = Sr([enh[0], enh[1], enh[2]], 2);\n final = W(stack, [1, squeeze.shape[0] || 0, squeeze.shape[1] || 0, 3]);\n Ot([...sub, ...range, ...enh]);\n } else {\n final = Ra(squeeze, 0);\n }\n Ot([...rgb3, ...min, ...max, rgb3, squeeze, inputImage]);\n return final;\n}\n\n// src/image/image.ts\nvar maxSize = 3840;\nvar inCanvas = null;\nvar outCanvas = null;\nvar tmpCanvas = null;\nvar fx2;\nvar last = {\n inputSum: 0,\n cacheDiff: 1,\n sumMethod: 0,\n inputTensor: void 0\n};\nfunction reset() {\n last.inputSum = 0;\n last.cacheDiff = 1;\n last.sumMethod = 0;\n last.inputTensor = void 0;\n}\nfunction canvas(width, height) {\n let c;\n if (env.browser) {\n if (env.worker) {\n if (typeof OffscreenCanvas === \"undefined\")\n throw new Error(\"canvas error: attempted to run in web worker but OffscreenCanvas is not supported\");\n c = new OffscreenCanvas(width, height);\n } else {\n if (typeof document !== \"undefined\") {\n c = document.createElement(\"canvas\");\n c.width = width;\n c.height = height;\n } else if (typeof navigator !== \"undefined\" && navigator.product === \"ReactNative\") {\n if (typeof env.Canvas !== \"undefined\")\n c = new env.Canvas(width, height);\n else if (typeof globalThis.Canvas !== \"undefined\")\n c = new globalThis.Canvas(width, height);\n else\n throw new Error(\"canvas error: attempted to use canvas in react-native without canvas support installed\");\n } else {\n throw new Error(\"canvas error: attempted to run in browser but DOM is not defined\");\n }\n }\n } else {\n if (typeof env.Canvas !== \"undefined\")\n c = new env.Canvas(width, height);\n else if (typeof globalThis.Canvas !== \"undefined\")\n c = new globalThis.Canvas(width, height);\n }\n return c;\n}\nfunction copy(input, output) {\n const outputCanvas = output || canvas(input.width, input.height);\n const ctx = outputCanvas.getContext(\"2d\");\n ctx.drawImage(input, 0, 0);\n return outputCanvas;\n}\nasync function process2(input, config3, getTensor = true) {\n var _a2, _b2, _c2;\n if (!input) {\n if (config3.debug)\n log(\"input error: input is missing\");\n return { tensor: null, canvas: null };\n }\n if (!(input instanceof it) && !(typeof Image !== \"undefined\" && input instanceof Image) && !(typeof globalThis.Canvas !== \"undefined\" && input instanceof globalThis.Canvas) && !(typeof ImageData !== \"undefined\" && input instanceof ImageData) && !(typeof ImageBitmap !== \"undefined\" && input instanceof ImageBitmap) && !(typeof HTMLImageElement !== \"undefined\" && input instanceof HTMLImageElement) && !(typeof HTMLMediaElement !== \"undefined\" && input instanceof HTMLMediaElement) && !(typeof HTMLVideoElement !== \"undefined\" && input instanceof HTMLVideoElement) && !(typeof HTMLCanvasElement !== \"undefined\" && input instanceof HTMLCanvasElement) && !(typeof OffscreenCanvas !== \"undefined\" && input instanceof OffscreenCanvas)) {\n throw new Error(\"input error: type not recognized\");\n }\n if (input instanceof it) {\n let tensor2 = null;\n if (input[\"isDisposedInternal\"])\n throw new Error(\"input error: attempted to use tensor but it is disposed\");\n if (!input.shape)\n throw new Error(\"input error: attempted to use tensor without a shape\");\n if (input.shape.length === 3) {\n if (input.shape[2] === 3) {\n tensor2 = Ra(input, 0);\n } else if (input.shape[2] === 4) {\n const rgb3 = Qk(input, [0, 0, 0], [-1, -1, 3]);\n tensor2 = Ra(rgb3, 0);\n Ot(rgb3);\n }\n } else if (input.shape.length === 4) {\n if (input.shape[3] === 3) {\n tensor2 = Lr(input);\n } else if (input.shape[3] === 4) {\n tensor2 = Zk(input, [0, 0, 0, 0], [-1, -1, -1, 3]);\n }\n }\n if (tensor2 == null || tensor2.shape.length !== 4 || tensor2.shape[0] !== 1 || tensor2.shape[3] !== 3)\n throw new Error(`input error: attempted to use tensor with unrecognized shape: ${input.shape.toString()}`);\n if (tensor2.dtype === \"int32\") {\n const cast = je(tensor2, \"float32\");\n Ot(tensor2);\n tensor2 = cast;\n }\n return { tensor: tensor2, canvas: config3.filter.return ? outCanvas : null };\n }\n if (typeof input[\"readyState\"] !== \"undefined\" && input.readyState <= 2) {\n if (config3.debug)\n log(\"input stream is not ready\");\n return { tensor: null, canvas: inCanvas };\n }\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 if (!originalWidth || !originalHeight) {\n if (config3.debug)\n log(\"cannot determine input dimensions\");\n return { tensor: null, canvas: inCanvas };\n }\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (targetWidth > maxSize) {\n targetWidth = maxSize;\n targetHeight = Math.trunc(targetWidth * originalHeight / originalWidth);\n }\n if (targetHeight > maxSize) {\n targetHeight = maxSize;\n targetWidth = Math.trunc(targetHeight * originalWidth / originalHeight);\n }\n if ((((_a2 = config3.filter) == null ? void 0 : _a2.width) || 0) > 0)\n targetWidth = config3.filter.width;\n else if ((((_b2 = config3.filter) == null ? void 0 : _b2.height) || 0) > 0)\n targetWidth = originalWidth * ((config3.filter.height || 0) / originalHeight);\n if ((config3.filter.height || 0) > 0)\n targetHeight = config3.filter.height;\n else if ((config3.filter.width || 0) > 0)\n targetHeight = originalHeight * ((config3.filter.width || 0) / originalWidth);\n if (!targetWidth || !targetHeight)\n throw new Error(\"input error: cannot determine dimension\");\n if (!inCanvas || inCanvas.width !== targetWidth || inCanvas.height !== targetHeight)\n inCanvas = canvas(targetWidth, targetHeight);\n const inCtx = inCanvas.getContext(\"2d\");\n if (typeof ImageData !== \"undefined\" && input instanceof ImageData) {\n inCtx.putImageData(input, 0, 0);\n } else {\n if (config3.filter.flip && typeof inCtx.translate !== \"undefined\") {\n inCtx.translate(originalWidth, 0);\n inCtx.scale(-1, 1);\n inCtx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n inCtx.setTransform(1, 0, 0, 1, 0, 0);\n } else {\n inCtx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n }\n }\n if (!outCanvas || inCanvas.width !== outCanvas.width || inCanvas.height !== outCanvas.height)\n outCanvas = canvas(inCanvas.width, inCanvas.height);\n if (config3.filter.enabled && env.webgl.supported) {\n if (!fx2)\n fx2 = env.browser ? new GLImageFilter() : null;\n env.filter = !!fx2;\n if (!(fx2 == null ? void 0 : fx2.add)) {\n if (config3.debug)\n log(\"input process error: cannot initialize filters\");\n env.webgl.supported = false;\n config3.filter.enabled = false;\n copy(inCanvas, outCanvas);\n } else {\n fx2.reset();\n if (config3.filter.brightness !== 0)\n fx2.add(\"brightness\", config3.filter.brightness);\n if (config3.filter.contrast !== 0)\n fx2.add(\"contrast\", config3.filter.contrast);\n if (config3.filter.sharpness !== 0)\n fx2.add(\"sharpen\", config3.filter.sharpness);\n if (config3.filter.blur !== 0)\n fx2.add(\"blur\", config3.filter.blur);\n if (config3.filter.saturation !== 0)\n fx2.add(\"saturation\", config3.filter.saturation);\n if (config3.filter.hue !== 0)\n fx2.add(\"hue\", config3.filter.hue);\n if (config3.filter.negative)\n fx2.add(\"negative\");\n if (config3.filter.sepia)\n fx2.add(\"sepia\");\n if (config3.filter.vintage)\n fx2.add(\"brownie\");\n if (config3.filter.sepia)\n fx2.add(\"sepia\");\n if (config3.filter.kodachrome)\n fx2.add(\"kodachrome\");\n if (config3.filter.technicolor)\n fx2.add(\"technicolor\");\n if (config3.filter.polaroid)\n fx2.add(\"polaroid\");\n if (config3.filter.pixelate !== 0)\n fx2.add(\"pixelate\", config3.filter.pixelate);\n if (((_c2 = fx2.get()) == null ? void 0 : _c2.length) > 1)\n outCanvas = fx2.apply(inCanvas);\n else\n outCanvas = fx2.draw(inCanvas);\n }\n } else {\n copy(inCanvas, outCanvas);\n if (fx2)\n fx2 = null;\n env.filter = !!fx2;\n }\n if (!getTensor)\n return { tensor: null, canvas: outCanvas };\n if (!outCanvas)\n throw new Error(\"canvas error: cannot create output\");\n let pixels;\n let depth = 3;\n if (typeof ImageData !== \"undefined\" && input instanceof ImageData || input.data && input.width && input.height) {\n if (env.browser && gN) {\n pixels = gN ? gN.fromPixels(input) : null;\n } else {\n depth = input.data.length / input.height / input.width;\n const arr = new Uint8Array(input.data.buffer);\n pixels = nr(arr, [input.height, input.width, depth], \"int32\");\n }\n } else {\n if (!tmpCanvas || outCanvas.width !== tmpCanvas.width || outCanvas.height !== tmpCanvas.height)\n tmpCanvas = canvas(outCanvas.width, outCanvas.height);\n if (gN && env.browser) {\n if (config3.backend === \"webgl\" || config3.backend === \"humangl\" || config3.backend === \"webgpu\") {\n pixels = gN.fromPixels(outCanvas);\n } else {\n tmpCanvas = copy(outCanvas);\n pixels = gN.fromPixels(tmpCanvas);\n }\n } else {\n const tempCanvas = copy(outCanvas);\n const tempCtx = tempCanvas.getContext(\"2d\");\n const tempData = tempCtx.getImageData(0, 0, targetWidth, targetHeight);\n depth = tempData.data.length / targetWidth / targetHeight;\n const arr = new Uint8Array(tempData.data.buffer);\n pixels = nr(arr, [targetWidth, targetHeight, depth]);\n }\n }\n if (depth === 4) {\n const rgb3 = Qk(pixels, [0, 0, 0], [-1, -1, 3]);\n Ot(pixels);\n pixels = rgb3;\n }\n if (!pixels)\n throw new Error(\"input error: cannot create tensor\");\n const casted = je(pixels, \"float32\");\n const tensor = config3.filter.equalization ? await histogramEqualization(casted) : Ra(casted, 0);\n Ot([pixels, casted]);\n if (config3.filter.autoBrightness) {\n const max = Gs(tensor);\n const maxVal = await max.data();\n config3.filter.brightness = maxVal[0] > 1 ? 1 - maxVal[0] / 255 : 1 - maxVal[0];\n Ot(max);\n }\n return { tensor, canvas: config3.filter.return ? outCanvas : null };\n}\nasync function skip(config3, input) {\n let skipFrame = false;\n if (config3.cacheSensitivity === 0 || !input.shape || input.shape.length !== 4 || input.shape[1] > 3840 || input.shape[2] > 2160)\n return skipFrame;\n if (!last.inputTensor) {\n last.inputTensor = Lr(input);\n } else if (last.inputTensor.shape[1] !== input.shape[1] || last.inputTensor.shape[2] !== input.shape[2]) {\n Ot(last.inputTensor);\n last.inputTensor = Lr(input);\n } else {\n const t10 = {};\n t10.diff = ke(input, last.inputTensor);\n t10.squared = ne(t10.diff, t10.diff);\n t10.sum = et(t10.squared);\n const diffSum = await t10.sum.data();\n const diffRelative = diffSum[0] / (input.shape[1] || 1) / (input.shape[2] || 1) / 255 / 3;\n Ot([last.inputTensor, t10.diff, t10.squared, t10.sum]);\n last.inputTensor = Lr(input);\n skipFrame = diffRelative <= (config3.cacheSensitivity || 0);\n }\n return skipFrame;\n}\nasync function compare(config3, input1, input2) {\n const t10 = {};\n if (!input1 || !input2 || input1.shape.length !== 4 || input1.shape.length !== input2.shape.length) {\n if (!config3.debug)\n log(\"invalid input tensor or tensor shapes do not match:\", input1.shape, input2.shape);\n return 0;\n }\n if (input1.shape[0] !== 1 || input2.shape[0] !== 1 || input1.shape[3] !== 3 || input2.shape[3] !== 3) {\n if (!config3.debug)\n log(\"input tensors must be of shape [1, height, width, 3]:\", input1.shape, input2.shape);\n return 0;\n }\n t10.input1 = Lr(input1);\n t10.input2 = input1.shape[1] !== input2.shape[1] || input1.shape[2] !== input2.shape[2] ? eK.resizeBilinear(input2, [input1.shape[1], input1.shape[2]]) : Lr(input2);\n t10.diff = ke(t10.input1, t10.input2);\n t10.squared = ne(t10.diff, t10.diff);\n t10.sum = et(t10.squared);\n const diffSum = await t10.sum.data();\n const diffRelative = diffSum[0] / (input1.shape[1] || 1) / (input1.shape[2] || 1) / 255 / 3;\n Ot([t10.input1, t10.input2, t10.diff, t10.squared, t10.sum]);\n return diffRelative;\n}\n\n// src/util/env.ts\nvar _canvas, _image, _imageData;\nvar Env = class {\n constructor() {\n /** Running in Browser */\n __publicField(this, \"browser\");\n /** Running in NodeJS */\n __publicField(this, \"node\");\n /** Running in WebWorker thread */\n __publicField(this, \"worker\");\n /** Detected platform */\n __publicField(this, \"platform\", \"\");\n /** Detected agent */\n __publicField(this, \"agent\", \"\");\n /** List of supported backends */\n __publicField(this, \"backends\", []);\n /** Has any work been performed so far */\n __publicField(this, \"initial\");\n /** Are image filters supported? */\n __publicField(this, \"filter\");\n /** TFJS instance details */\n __publicField(this, \"tfjs\");\n /** Is offscreenCanvas supported? */\n __publicField(this, \"offscreen\");\n /** Are performance counter instant values or additive */\n __publicField(this, \"perfadd\", false);\n /** If using tfjs-node get version of underlying tensorflow shared library and if gpu acceleration is enabled */\n __publicField(this, \"tensorflow\", {\n version: void 0,\n gpu: void 0\n });\n /** WASM detected capabilities */\n __publicField(this, \"wasm\", {\n supported: void 0,\n backend: void 0,\n simd: void 0,\n multithread: void 0\n });\n /** WebGL detected capabilities */\n __publicField(this, \"webgl\", {\n supported: void 0,\n backend: void 0,\n version: void 0,\n renderer: void 0,\n shader: void 0,\n vendor: void 0\n });\n /** WebGPU detected capabilities */\n __publicField(this, \"webgpu\", {\n supported: void 0,\n backend: void 0,\n adapter: void 0\n });\n /** CPU info */\n __publicField(this, \"cpu\", {\n model: void 0,\n flags: []\n });\n /** List of supported kernels for current backend */\n __publicField(this, \"kernels\", []);\n /** MonkeyPatch for Canvas/Image/ImageData */\n __privateAdd(this, _canvas, void 0);\n __privateAdd(this, _image, void 0);\n __privateAdd(this, _imageData, void 0);\n this.browser = typeof navigator !== \"undefined\";\n this.node = typeof process !== \"undefined\" && typeof process.versions !== \"undefined\" && typeof process.versions.node !== \"undefined\";\n this.tfjs = { version: tse[\"tfjs-core\"] };\n this.offscreen = typeof OffscreenCanvas !== \"undefined\";\n this.initial = true;\n this.worker = this.browser && this.offscreen ? typeof WorkerGlobalScope !== \"undefined\" : void 0;\n if (typeof navigator !== \"undefined\" && typeof navigator.userAgent !== \"undefined\") {\n const agent = navigator.userAgent || \"\";\n const raw = agent.match(/\\(([^()]+)\\)/g);\n if (raw == null ? void 0 : raw[0]) {\n const platformMatch = raw[0].match(/\\(([^()]+)\\)/g);\n this.platform = (platformMatch == null ? void 0 : platformMatch[0]) ? platformMatch[0].replace(/\\(|\\)/g, \"\") : \"\";\n this.agent = agent.replace(raw[0], \"\");\n if (this.platform[1])\n this.agent = this.agent.replace(raw[1], \"\");\n this.agent = this.agent.replace(/ /g, \" \");\n }\n } else if (typeof process !== \"undefined\") {\n this.platform = `${process.platform} ${process.arch}`;\n this.agent = `NodeJS ${process.version}`;\n }\n }\n get Canvas() {\n return __privateGet(this, _canvas);\n }\n set Canvas(val) {\n __privateSet(this, _canvas, val);\n globalThis.Canvas = val;\n }\n get Image() {\n return __privateGet(this, _image);\n }\n // @ts-ignore monkey-patch;\n set Image(val) {\n __privateSet(this, _image, val);\n globalThis.Image = val;\n }\n get ImageData() {\n return __privateGet(this, _imageData);\n }\n // @ts-ignore monkey-patch;\n set ImageData(val) {\n __privateSet(this, _imageData, val);\n globalThis.ImageData = val;\n }\n /** update backend information */\n async updateBackend() {\n this.backends = Object.keys(sr().registryFactory);\n try {\n this.tensorflow = {\n version: Pie()[\"binding\"] ? Pie()[\"binding\"].TF_Version : void 0,\n gpu: Pie()[\"binding\"] ? Pie()[\"binding\"].isUsingGpuDevice() : void 0\n };\n } catch (e) {\n }\n this.wasm.supported = typeof WebAssembly !== \"undefined\";\n this.wasm.backend = this.backends.includes(\"wasm\");\n if (this.wasm.supported && this.wasm.backend) {\n this.wasm.simd = await O().getAsync(\"WASM_HAS_SIMD_SUPPORT\");\n this.wasm.multithread = await O().getAsync(\"WASM_HAS_MULTITHREAD_SUPPORT\");\n }\n const c = canvas(100, 100);\n const gl2 = c ? c.getContext(\"webgl2\") : void 0;\n this.webgl.supported = typeof gl2 !== \"undefined\";\n this.webgl.backend = this.backends.includes(\"webgl\");\n if (this.webgl.supported && this.webgl.backend && gl2) {\n this.webgl.version = gl2.getParameter(gl2.VERSION);\n this.webgl.vendor = gl2.getParameter(gl2.VENDOR);\n this.webgl.renderer = gl2.getParameter(gl2.RENDERER);\n this.webgl.shader = gl2.getParameter(gl2.SHADING_LANGUAGE_VERSION);\n }\n this.webgpu.supported = this.browser && typeof navigator !== \"undefined\" && typeof navigator.gpu !== \"undefined\";\n this.webgpu.backend = this.backends.includes(\"webgpu\");\n try {\n if (this.webgpu.supported) {\n const adapter = await navigator.gpu.requestAdapter();\n this.webgpu.adapter = await (adapter == null ? void 0 : adapter.requestAdapterInfo());\n }\n } catch (e) {\n this.webgpu.supported = false;\n }\n try {\n this.kernels = Rm(Rie()).map((kernel) => kernel.kernelName.toLowerCase());\n } catch (e) {\n }\n }\n /** update cpu information */\n updateCPU() {\n const cpu = { model: \"\", flags: [] };\n if (this.node && this.platform.startsWith(\"linux\")) {\n }\n if (!this.cpu)\n Object.defineProperty(this, \"cpu\", { value: cpu });\n else\n this.cpu = cpu;\n }\n};\n_canvas = new WeakMap();\n_image = new WeakMap();\n_imageData = new WeakMap();\nvar env = new Env();\n\n// src/util/webcam.ts\nvar WebCam = class {\n constructor() {\n // eslint-disable-line @typescript-eslint/no-extraneous-class\n /** current webcam configuration */\n __publicField(this, \"config\");\n /** instance of dom element associated with webcam stream */\n __publicField(this, \"element\");\n /** active webcam stream */\n __publicField(this, \"stream\");\n /** enumerated video devices */\n __publicField(this, \"devices\", []);\n __publicField(this, \"enumerate\", async () => {\n try {\n const devices = await navigator.mediaDevices.enumerateDevices();\n this.devices = devices.filter((device) => device.kind === \"videoinput\");\n } catch (e) {\n this.devices = [];\n }\n return this.devices;\n });\n /** start method initializizes webcam stream and associates it with a dom video element */\n __publicField(this, \"start\", async (webcamConfig) => {\n var _a2, _b2;\n if (webcamConfig == null ? void 0 : webcamConfig.debug)\n this.config.debug = webcamConfig == null ? void 0 : webcamConfig.debug;\n if (webcamConfig == null ? void 0 : webcamConfig.crop)\n this.config.crop = webcamConfig == null ? void 0 : webcamConfig.crop;\n if (webcamConfig == null ? void 0 : webcamConfig.mode)\n this.config.mode = webcamConfig == null ? void 0 : webcamConfig.mode;\n if (webcamConfig == null ? void 0 : webcamConfig.width)\n this.config.width = webcamConfig == null ? void 0 : webcamConfig.width;\n if (webcamConfig == null ? void 0 : webcamConfig.height)\n this.config.height = webcamConfig == null ? void 0 : webcamConfig.height;\n if (webcamConfig == null ? void 0 : webcamConfig.id)\n this.config.id = webcamConfig == null ? void 0 : webcamConfig.id;\n if (webcamConfig == null ? void 0 : webcamConfig.element) {\n if (typeof webcamConfig.element === \"string\") {\n const el2 = document.getElementById(webcamConfig.element);\n if (el2 && el2 instanceof HTMLVideoElement) {\n this.element = el2;\n } else {\n if (this.config.debug)\n log(\"webcam\", \"cannot get dom element\", webcamConfig.element);\n return;\n }\n } else if (webcamConfig.element instanceof HTMLVideoElement) {\n this.element = webcamConfig.element;\n } else {\n if (this.config.debug)\n log(\"webcam\", \"unknown dom element\", webcamConfig.element);\n return;\n }\n } else {\n this.element = document.createElement(\"video\");\n }\n const requestedConstraints = {\n audio: false,\n video: {\n facingMode: this.config.mode === \"front\" ? \"user\" : \"environment\",\n // @ts-ignore // resizeMode is still not defined in tslib\n resizeMode: this.config.crop ? \"crop-and-scale\" : \"none\"\n }\n };\n if (((_a2 = this.config) == null ? void 0 : _a2.width) > 0)\n requestedConstraints.video.width = { ideal: this.config.width };\n if (((_b2 = this.config) == null ? void 0 : _b2.height) > 0)\n requestedConstraints.video.height = { ideal: this.config.height };\n if (this.config.id)\n requestedConstraints.video.deviceId = this.config.id;\n this.element.addEventListener(\"play\", () => {\n if (this.config.debug)\n log(\"webcam\", \"play\");\n });\n this.element.addEventListener(\"pause\", () => {\n if (this.config.debug)\n log(\"webcam\", \"pause\");\n });\n this.element.addEventListener(\"click\", async () => {\n if (!this.element || !this.stream)\n return;\n if (this.element.paused)\n await this.element.play();\n else\n this.element.pause();\n });\n if (!(navigator == null ? void 0 : navigator.mediaDevices)) {\n if (this.config.debug)\n log(\"webcam\", \"no devices\");\n return;\n }\n try {\n this.stream = await navigator.mediaDevices.getUserMedia(requestedConstraints);\n } catch (err) {\n log(\"webcam\", err);\n return;\n }\n if (!this.stream) {\n if (this.config.debug)\n log(\"webcam\", \"no stream\");\n return;\n }\n this.element.srcObject = this.stream;\n const ready = new Promise((resolve) => {\n if (!this.element)\n resolve(false);\n else\n this.element.onloadeddata = () => resolve(true);\n });\n await ready;\n await this.element.play();\n if (this.config.debug) {\n log(\"webcam\", {\n width: this.width,\n height: this.height,\n label: this.label,\n stream: this.stream,\n track: this.track,\n settings: this.settings,\n constraints: this.constraints,\n capabilities: this.capabilities\n });\n }\n });\n /** pause webcam video method */\n __publicField(this, \"pause\", () => {\n if (this.element)\n this.element.pause();\n });\n /** play webcam video method */\n __publicField(this, \"play\", async () => {\n if (this.element)\n await this.element.play();\n });\n /** stop method stops active webcam stream track and disconnects webcam */\n __publicField(this, \"stop\", () => {\n if (this.config.debug)\n log(\"webcam\", \"stop\");\n if (this.track)\n this.track.stop();\n });\n this.config = {\n element: void 0,\n debug: true,\n mode: \"front\",\n crop: false,\n width: 0,\n height: 0\n };\n }\n /** get active webcam stream track */\n get track() {\n if (!this.stream)\n return void 0;\n return this.stream.getVideoTracks()[0];\n }\n /** get webcam capabilities */\n get capabilities() {\n if (!this.track)\n return void 0;\n return this.track.getCapabilities ? this.track.getCapabilities() : void 0;\n }\n /** get webcam constraints */\n get constraints() {\n if (!this.track)\n return void 0;\n return this.track.getConstraints ? this.track.getConstraints() : void 0;\n }\n /** get webcam settings */\n get settings() {\n if (!this.stream)\n return void 0;\n const track = this.stream.getVideoTracks()[0];\n return track.getSettings ? track.getSettings() : void 0;\n }\n /** get webcam label */\n get label() {\n if (!this.track)\n return \"\";\n return this.track.label;\n }\n /** is webcam paused */\n get paused() {\n var _a2;\n return ((_a2 = this.element) == null ? void 0 : _a2.paused) || false;\n }\n /** webcam current width */\n get width() {\n var _a2;\n return ((_a2 = this.element) == null ? void 0 : _a2.videoWidth) || 0;\n }\n /** webcam current height */\n get height() {\n var _a2;\n return ((_a2 = this.element) == null ? void 0 : _a2.videoHeight) || 0;\n }\n};\n\n// models/models.json\nvar models_exports = {};\n__export(models_exports, {\n \"affectnet-mobilenet\": () => affectnet_mobilenet,\n age: () => age,\n \"anti-spoofing\": () => anti_spoofing,\n antispoof: () => antispoof,\n blazeface: () => blazeface,\n \"blazeface-back\": () => blazeface_back,\n \"blazeface-front\": () => blazeface_front,\n \"blazepose-detector\": () => blazepose_detector,\n \"blazepose-full\": () => blazepose_full,\n \"blazepose-heavy\": () => blazepose_heavy,\n \"blazepose-lite\": () => blazepose_lite,\n centernet: () => centernet,\n default: () => models_default,\n efficientpose: () => efficientpose,\n \"efficientpose-i-lite\": () => efficientpose_i_lite,\n \"efficientpose-ii-lite\": () => efficientpose_ii_lite,\n \"efficientpose-iv\": () => efficientpose_iv,\n emotion: () => emotion,\n faceboxes: () => faceboxes,\n facemesh: () => facemesh,\n \"facemesh-attention\": () => facemesh_attention,\n \"facemesh-attention-pinto\": () => facemesh_attention_pinto,\n \"facemesh-detection-full\": () => facemesh_detection_full,\n \"facemesh-detection-short\": () => facemesh_detection_short,\n faceres: () => faceres,\n \"faceres-deep\": () => faceres_deep,\n gear: () => gear,\n \"gear-e1\": () => gear_e1,\n \"gear-e2\": () => gear_e2,\n gender: () => gender,\n \"gender-ssrnet-imdb\": () => gender_ssrnet_imdb,\n handdetect: () => handdetect,\n \"handlandmark-full\": () => handlandmark_full,\n \"handlandmark-lite\": () => handlandmark_lite,\n \"handlandmark-sparse\": () => handlandmark_sparse,\n handskeleton: () => handskeleton,\n handtrack: () => handtrack,\n \"insightface-efficientnet-b0\": () => insightface_efficientnet_b0,\n \"insightface-ghostnet-strides1\": () => insightface_ghostnet_strides1,\n \"insightface-ghostnet-strides2\": () => insightface_ghostnet_strides2,\n \"insightface-mobilenet-emore\": () => insightface_mobilenet_emore,\n \"insightface-mobilenet-swish\": () => insightface_mobilenet_swish,\n iris: () => iris,\n liveness: () => liveness,\n meet: () => meet,\n mobileface: () => mobileface,\n mobilefacenet: () => mobilefacenet,\n models: () => models,\n \"movenet-lightning\": () => movenet_lightning,\n \"movenet-multipose\": () => movenet_multipose,\n \"movenet-thunder\": () => movenet_thunder,\n nanodet: () => nanodet,\n \"nanodet-e\": () => nanodet_e,\n \"nanodet-g\": () => nanodet_g,\n \"nanodet-m\": () => nanodet_m,\n \"nanodet-t\": () => nanodet_t,\n posenet: () => posenet,\n rvm: () => rvm,\n selfie: () => selfie\n});\nvar antispoof = 853098;\nvar blazeface = 538928;\nvar centernet = 4030290;\nvar emotion = 820516;\nvar facemesh = 1477958;\nvar faceres = 6978814;\nvar handlandmark_lite = 2023432;\nvar handtrack = 2964837;\nvar iris = 2599092;\nvar liveness = 592976;\nvar models = 0;\nvar movenet_lightning = 4650216;\nvar affectnet_mobilenet = 6920630;\nvar age = 161240;\nvar blazeface_back = 538928;\nvar blazeface_front = 402048;\nvar blazepose_detector = 5928856;\nvar blazepose_full = 6339202;\nvar blazepose_heavy = 27502466;\nvar blazepose_lite = 2726402;\nvar efficientpose = 5651240;\nvar faceboxes = 2013002;\nvar facemesh_attention_pinto = 2387598;\nvar facemesh_attention = 2382414;\nvar facemesh_detection_full = 1026192;\nvar facemesh_detection_short = 201268;\nvar faceres_deep = 13957620;\nvar gear_e1 = 112438;\nvar gear_e2 = 112438;\nvar gear = 1498916;\nvar gender_ssrnet_imdb = 161236;\nvar gender = 201808;\nvar handdetect = 3515612;\nvar handlandmark_full = 5431368;\nvar handlandmark_sparse = 5286322;\nvar handskeleton = 5502280;\nvar meet = 372228;\nvar mobileface = 2183192;\nvar mobilefacenet = 5171976;\nvar movenet_multipose = 9448838;\nvar movenet_thunder = 12477112;\nvar nanodet = 7574558;\nvar posenet = 5032780;\nvar rvm = 3739355;\nvar selfie = 212886;\nvar anti_spoofing = 853098;\nvar efficientpose_i_lite = 2269064;\nvar efficientpose_ii_lite = 5651240;\nvar efficientpose_iv = 25643252;\nvar insightface_efficientnet_b0 = 13013224;\nvar insightface_ghostnet_strides1 = 8093408;\nvar insightface_ghostnet_strides2 = 8049584;\nvar insightface_mobilenet_emore = 6938536;\nvar insightface_mobilenet_swish = 12168584;\nvar nanodet_e = 12319156;\nvar nanodet_g = 7574558;\nvar nanodet_m = 1887474;\nvar nanodet_t = 5294216;\nvar models_default = {\n antispoof,\n blazeface,\n centernet,\n emotion,\n facemesh,\n faceres,\n \"handlandmark-lite\": handlandmark_lite,\n handtrack,\n iris,\n liveness,\n models,\n \"movenet-lightning\": movenet_lightning,\n \"affectnet-mobilenet\": affectnet_mobilenet,\n age,\n \"blazeface-back\": blazeface_back,\n \"blazeface-front\": blazeface_front,\n \"blazepose-detector\": blazepose_detector,\n \"blazepose-full\": blazepose_full,\n \"blazepose-heavy\": blazepose_heavy,\n \"blazepose-lite\": blazepose_lite,\n efficientpose,\n faceboxes,\n \"facemesh-attention-pinto\": facemesh_attention_pinto,\n \"facemesh-attention\": facemesh_attention,\n \"facemesh-detection-full\": facemesh_detection_full,\n \"facemesh-detection-short\": facemesh_detection_short,\n \"faceres-deep\": faceres_deep,\n \"gear-e1\": gear_e1,\n \"gear-e2\": gear_e2,\n gear,\n \"gender-ssrnet-imdb\": gender_ssrnet_imdb,\n gender,\n handdetect,\n \"handlandmark-full\": handlandmark_full,\n \"handlandmark-sparse\": handlandmark_sparse,\n handskeleton,\n meet,\n mobileface,\n mobilefacenet,\n \"movenet-multipose\": movenet_multipose,\n \"movenet-thunder\": movenet_thunder,\n nanodet,\n posenet,\n rvm,\n selfie,\n \"anti-spoofing\": anti_spoofing,\n \"efficientpose-i-lite\": efficientpose_i_lite,\n \"efficientpose-ii-lite\": efficientpose_ii_lite,\n \"efficientpose-iv\": efficientpose_iv,\n \"insightface-efficientnet-b0\": insightface_efficientnet_b0,\n \"insightface-ghostnet-strides1\": insightface_ghostnet_strides1,\n \"insightface-ghostnet-strides2\": insightface_ghostnet_strides2,\n \"insightface-mobilenet-emore\": insightface_mobilenet_emore,\n \"insightface-mobilenet-swish\": insightface_mobilenet_swish,\n \"nanodet-e\": nanodet_e,\n \"nanodet-g\": nanodet_g,\n \"nanodet-m\": nanodet_m,\n \"nanodet-t\": nanodet_t\n};\n\n// src/tfjs/load.ts\nvar options = {\n cacheModels: true,\n cacheSupported: true,\n verbose: true,\n debug: false,\n modelBasePath: \"\"\n};\nvar modelStats = {};\nasync function httpHandler(url, init4) {\n if (options.debug)\n log(\"load model fetch:\", url, init4);\n return fetch(url, init4);\n}\nfunction setModelLoadOptions(config3) {\n options.cacheModels = config3.cacheModels;\n options.verbose = config3.debug;\n options.modelBasePath = config3.modelBasePath;\n}\nasync function loadModel(modelPath) {\n var _a2, _b2, _c2, _d2;\n let modelUrl = join(options.modelBasePath, modelPath || \"\");\n if (!modelUrl.toLowerCase().endsWith(\".json\"))\n modelUrl += \".json\";\n const modelPathSegments = modelUrl.includes(\"/\") ? modelUrl.split(\"/\") : modelUrl.split(\"\\\\\");\n const shortModelName = modelPathSegments[modelPathSegments.length - 1].replace(\".json\", \"\");\n const cachedModelName = \"indexeddb://\" + shortModelName;\n modelStats[shortModelName] = {\n name: shortModelName,\n sizeFromManifest: 0,\n sizeLoadedWeights: 0,\n sizeDesired: models_exports[shortModelName],\n inCache: false,\n url: \"\"\n };\n options.cacheSupported = typeof indexedDB !== \"undefined\";\n let cachedModels = {};\n try {\n cachedModels = options.cacheSupported && options.cacheModels ? await La.listModels() : {};\n } catch (e) {\n options.cacheSupported = false;\n }\n modelStats[shortModelName].inCache = options.cacheSupported && options.cacheModels && Object.keys(cachedModels).includes(cachedModelName);\n modelStats[shortModelName].url = modelStats[shortModelName].inCache ? cachedModelName : modelUrl;\n const tfLoadOptions = typeof fetch === \"undefined\" ? {} : { fetchFunc: (url, init4) => httpHandler(url, init4) };\n let model23 = new fl(modelStats[shortModelName].url, tfLoadOptions);\n let loaded = false;\n try {\n model23.findIOHandler();\n if (options.debug)\n log(\"model load handler:\", model23[\"handler\"]);\n } catch (err) {\n log(\"error finding model i/o handler:\", modelUrl, err);\n }\n try {\n const artifacts = await ((_a2 = model23.handler) == null ? void 0 : _a2.load()) || null;\n modelStats[shortModelName].sizeFromManifest = ((_b2 = artifacts == null ? void 0 : artifacts.weightData) == null ? void 0 : _b2.byteLength) || 0;\n if (artifacts)\n model23.loadSync(artifacts);\n else\n model23 = await A6(modelStats[shortModelName].inCache ? cachedModelName : modelUrl, tfLoadOptions);\n modelStats[shortModelName].sizeLoadedWeights = ((_d2 = (_c2 = model23.artifacts) == null ? void 0 : _c2.weightData) == null ? void 0 : _d2.byteLength) || 0;\n if (options.verbose)\n log(\"load:\", { model: shortModelName, url: model23[\"modelUrl\"], bytes: modelStats[shortModelName].sizeLoadedWeights });\n loaded = true;\n } catch (err) {\n log(\"error loading model:\", modelUrl, err);\n }\n if (loaded && options.cacheModels && options.cacheSupported && !modelStats[shortModelName].inCache) {\n try {\n const saveResult = await model23.save(cachedModelName);\n if (options.debug)\n log(\"model saved:\", cachedModelName, saveResult);\n } catch (err) {\n log(\"error saving model:\", modelUrl, err);\n }\n }\n return model23;\n}\n\n// package.json\nvar version = \"3.0.5\";\n\n// src/tfjs/humangl.ts\nvar config2 = {\n name: \"humangl\",\n priority: 999,\n canvas: null,\n gl: null,\n extensions: [],\n webGLattr: {\n // 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 // default=true\n desynchronized: true\n // default=undefined\n }\n};\nfunction extensions() {\n const gl2 = config2.gl;\n if (!gl2)\n return;\n config2.extensions = gl2.getSupportedExtensions();\n}\nfunction register(instance) {\n var _a2;\n if (instance.config.backend !== \"humangl\")\n return;\n if (config2.name in sr().registry && !((_a2 = config2 == null ? void 0 : config2.gl) == null ? void 0 : _a2.getParameter(config2.gl.VERSION))) {\n log(\"humangl error: backend invalid context\");\n instance.models.reset();\n }\n if (!Fie(config2.name)) {\n try {\n config2.canvas = canvas(100, 100);\n } catch (err) {\n log(\"humangl error: cannot create canvas:\", err);\n return;\n }\n try {\n config2.gl = config2.canvas.getContext(\"webgl2\", config2.webGLattr);\n if (!config2.gl) {\n log(\"humangl error: cannot get webgl context\");\n return;\n }\n const glv2 = config2.gl.getParameter(config2.gl.VERSION).includes(\"2.0\");\n if (!glv2) {\n log(\"backend override: using fallback webgl backend as webgl 2.0 is not detected\");\n instance.config.backend = \"webgl\";\n return;\n }\n if (config2.canvas) {\n config2.canvas.addEventListener(\"webglcontextlost\", (e) => {\n log(\"humangl error:\", e.type);\n log(\"possible browser memory leak using webgl or conflict with multiple backend registrations\");\n instance.emit(\"error\");\n throw new Error(\"backend error: webgl context lost\");\n });\n config2.canvas.addEventListener(\"webglcontextrestored\", (e) => {\n log(\"humangl error: context restored:\", e);\n });\n config2.canvas.addEventListener(\"webglcontextcreationerror\", (e) => {\n log(\"humangl error: context create:\", e);\n });\n }\n } catch (err) {\n log(\"humangl error: cannot get webgl context:\", err);\n return;\n }\n try {\n US(2, config2.gl);\n } catch (err) {\n log(\"humangl error: cannot set webgl context:\", err);\n return;\n }\n try {\n const ctx = new Lu(config2.gl);\n Ti(config2.name, () => new Vi(ctx), config2.priority);\n } catch (err) {\n log(\"humangl error: cannot register webgl backend:\", err);\n return;\n }\n try {\n const kernels = Rm(\"webgl\");\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config2.name };\n ka(newKernelConfig);\n });\n } catch (err) {\n log(\"humangl error: cannot update webgl backend registration:\", err);\n return;\n }\n try {\n if (O().flagRegistry.WEBGL_VERSION)\n O().set(\"WEBGL_VERSION\", 2);\n } catch (err) {\n log(\"humangl error: cannot set WebGL backend flags:\", err);\n return;\n }\n extensions();\n const backend = Pie();\n const current = typeof backend[\"gpgpu\"] !== \"undefined\" ? backend[\"getGPGPUContext\"]().gl : null;\n if (current) {\n if (instance.config.debug)\n log(\"humangl backend registered:\", { webgl: current.getParameter(current.VERSION), renderer: current.getParameter(current.RENDERER) });\n } else {\n log(\"humangl error: no current gl context:\", current, config2.gl);\n }\n }\n}\n\n// src/tfjs/constants.ts\nvar constants = {\n tf255: 255,\n tf1: 1,\n tf2: 2,\n tf05: 0.5,\n tf127: 127.5,\n rgb: [0.2989, 0.587, 0.114]\n};\nfunction init() {\n constants.tf255 = Ce(255, \"float32\");\n constants.tf1 = Ce(1, \"float32\");\n constants.tf2 = Ce(2, \"float32\");\n constants.tf05 = Ce(0.5, \"float32\");\n constants.tf127 = Ce(127.5, \"float32\");\n constants.rgb = dr([0.2989, 0.587, 0.114], \"float32\");\n}\n\n// src/tfjs/backend.ts\nasync function getBestBackend() {\n var _a2;\n await env.updateBackend();\n if ((_a2 = env.tensorflow) == null ? void 0 : _a2.version)\n return \"tensorflow\";\n if (env.webgpu.supported && env.webgpu.backend)\n return \"webgpu\";\n if (env.webgl.supported && env.webgl.backend)\n return \"webgl\";\n if (env.wasm.supported && env.wasm.backend)\n return \"wasm\";\n return \"cpu\";\n}\nfunction registerCustomOps(config3) {\n const newKernels = [];\n if (!env.kernels.includes(\"mod\")) {\n const kernelMod = {\n kernelName: \"Mod\",\n backendName: Rie(),\n kernelFunc: (op) => Ee(() => ke(op.inputs.a, ne(He(op.inputs.a, op.inputs.b), op.inputs.b)))\n };\n ka(kernelMod);\n env.kernels.push(\"mod\");\n newKernels.push(\"mod\");\n }\n if (!env.kernels.includes(\"floormod\")) {\n const kernelFloorMod = {\n kernelName: \"FloorMod\",\n backendName: Rie(),\n kernelFunc: (op) => Ee(() => be(ne(Km(op.inputs.a, op.inputs.b), op.inputs.b), Jv(op.inputs.a, op.inputs.b)))\n };\n ka(kernelFloorMod);\n env.kernels.push(\"floormod\");\n newKernels.push(\"floormod\");\n }\n if (!env.kernels.includes(\"rotatewithoffset\") && config3.softwareKernels) {\n const kernelRotateWithOffset = {\n kernelName: \"RotateWithOffset\",\n backendName: Rie(),\n kernelFunc: (op) => Ee(() => {\n const backend = Rie();\n Eie(\"cpu\");\n const t10 = eK.rotateWithOffset(op.inputs.image, op.attrs.radians, op.attrs.fillValue, op.attrs.center);\n Eie(backend);\n return t10;\n })\n };\n ka(kernelRotateWithOffset);\n env.kernels.push(\"rotatewithoffset\");\n newKernels.push(\"rotatewithoffset\");\n }\n if (newKernels.length > 0 && config3.debug)\n log(\"registered kernels:\", newKernels);\n}\nvar defaultFlags = {};\nasync function check(instance, force = false) {\n var _a2;\n instance.state = \"backend\";\n if (((_a2 = instance.config.backend) == null ? void 0 : _a2.length) === 0)\n instance.config.backend = await getBestBackend();\n if (force || env.initial || instance.config.backend && instance.config.backend.length > 0 && Rie() !== instance.config.backend) {\n const timeStamp = now();\n if (instance.config.backend && instance.config.backend.length > 0) {\n if (typeof window === \"undefined\" && typeof WorkerGlobalScope !== \"undefined\" && instance.config.debug) {\n if (instance.config.debug)\n log(\"running inside web worker\");\n }\n if (env.browser && instance.config.backend === \"tensorflow\") {\n if (instance.config.debug)\n log(\"override: backend set to tensorflow while running in browser\");\n instance.config.backend = \"webgl\";\n }\n if (env.node && (instance.config.backend === \"webgl\" || instance.config.backend === \"humangl\")) {\n if (instance.config.debug)\n log(`override: backend set to ${instance.config.backend} while running in nodejs`);\n instance.config.backend = \"tensorflow\";\n }\n if (env.browser && instance.config.backend === \"webgpu\") {\n if (typeof navigator === \"undefined\" || typeof navigator.gpu === \"undefined\") {\n log(\"override: backend set to webgpu but browser does not support webgpu\");\n instance.config.backend = \"webgl\";\n } else {\n const adapter = await navigator.gpu.requestAdapter();\n if (instance.config.debug)\n log(\"enumerated webgpu adapter:\", adapter);\n if (!adapter) {\n log(\"override: backend set to webgpu but browser reports no available gpu\");\n instance.config.backend = \"webgl\";\n } else {\n const adapterInfo = \"requestAdapterInfo\" in adapter ? await adapter.requestAdapterInfo() : void 0;\n log(\"webgpu adapter info:\", adapterInfo);\n }\n }\n }\n let available = Object.keys(sr().registryFactory);\n if (instance.config.backend === \"humangl\" && !available.includes(\"humangl\")) {\n register(instance);\n available = Object.keys(sr().registryFactory);\n }\n if (instance.config.debug)\n log(\"available backends:\", available);\n if (!available.includes(instance.config.backend)) {\n log(`error: backend ${instance.config.backend} not found in registry`);\n instance.config.backend = env.node ? \"tensorflow\" : \"webgl\";\n if (instance.config.debug)\n log(`override: setting backend ${instance.config.backend}`);\n }\n if (instance.config.debug)\n log(\"setting backend:\", [instance.config.backend]);\n if (instance.config.backend === \"wasm\") {\n if (O().flagRegistry.CANVAS2D_WILL_READ_FREQUENTLY)\n O().set(\"CANVAS2D_WILL_READ_FREQUENTLY\", true);\n if (instance.config.debug)\n log(\"wasm path:\", instance.config.wasmPath);\n if (typeof Gee !== \"undefined\")\n Gee(instance.config.wasmPath, instance.config.wasmPlatformFetch);\n else\n throw new Error(\"backend error: attempting to use wasm backend but wasm path is not set\");\n let mt2 = false;\n let simd = false;\n try {\n mt2 = await O().getAsync(\"WASM_HAS_MULTITHREAD_SUPPORT\");\n simd = await O().getAsync(\"WASM_HAS_SIMD_SUPPORT\");\n if (instance.config.debug)\n log(`wasm execution: ${simd ? \"simd\" : \"no simd\"} ${mt2 ? \"multithreaded\" : \"singlethreaded\"}`);\n if (instance.config.debug && !simd)\n log(\"warning: wasm simd support is not enabled\");\n } catch (e) {\n log(\"wasm detection failed\");\n }\n }\n try {\n await Eie(instance.config.backend);\n await Aie();\n } catch (err) {\n log(\"error: cannot set backend:\", instance.config.backend, err);\n return false;\n }\n if (instance.config.debug)\n defaultFlags = JSON.parse(JSON.stringify(O().flags));\n }\n if (Rie() === \"humangl\" || Rie() === \"webgl\") {\n if (O().flagRegistry.WEBGL_USE_SHAPES_UNIFORMS)\n O().set(\"WEBGL_USE_SHAPES_UNIFORMS\", true);\n if (O().flagRegistry.WEBGL_EXP_CONV)\n O().set(\"WEBGL_EXP_CONV\", true);\n if (instance.config.debug && typeof instance.config.deallocate !== \"undefined\" && instance.config.deallocate) {\n log(\"changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:\", true);\n O().set(\"WEBGL_DELETE_TEXTURE_THRESHOLD\", 0);\n }\n }\n if (Rie() === \"webgpu\") {\n }\n if (instance.config.debug) {\n const newFlags = O().flags;\n const updatedFlags = {};\n for (const key of Object.keys(newFlags)) {\n if (defaultFlags[key] === newFlags[key])\n continue;\n updatedFlags[key] = newFlags[key];\n }\n if (instance.config.debug && Object.keys(updatedFlags).length > 0)\n log(\"backend:\", Rie(), \"flags:\", updatedFlags);\n }\n if (instance.config.flags && Object.keys(instance.config.flags).length > 0) {\n if (instance.config.debug)\n log(\"flags:\", instance.config[\"flags\"]);\n for (const [key, val] of Object.entries(instance.config.flags)) {\n O().set(key, val);\n }\n }\n Iie();\n init();\n instance.performance.initBackend = Math.trunc(now() - timeStamp);\n instance.config.backend = Rie();\n await env.updateBackend();\n registerCustomOps(instance.config);\n }\n return true;\n}\nfunction fakeOps(kernelNames, config3) {\n for (const kernelName of kernelNames) {\n const kernelConfig = {\n kernelName,\n backendName: config3.backend,\n kernelFunc: (param) => {\n var _a2;\n if (config3.debug)\n log(\"kernelFunc\", kernelName, config3.backend, param);\n return (_a2 = param == null ? void 0 : param.inputs) == null ? void 0 : _a2.info;\n }\n // setupFunc: () => { if (config.debug) log('kernelFunc', kernelName, config.backend); },\n // disposeFunc: () => { if (config.debug) log('kernelFunc', kernelName, config.backend); },\n };\n ka(kernelConfig);\n }\n env.kernels = Rm(Rie()).map((kernel) => kernel.kernelName.toLowerCase());\n}\n\n// src/draw/draw.ts\nvar draw_exports = {};\n__export(draw_exports, {\n all: () => all,\n body: () => body,\n canvas: () => canvas2,\n face: () => face,\n gesture: () => gesture,\n hand: () => hand,\n init: () => init2,\n object: () => object,\n options: () => options2,\n person: () => person\n});\n\n// src/draw/primitives.ts\nvar getCanvasContext = (input) => {\n if (!input)\n log(\"draw error: invalid canvas\");\n else if (!input.getContext)\n log(\"draw error: canvas context not defined\");\n else {\n const ctx = input.getContext(\"2d\");\n if (!ctx)\n log(\"draw error: cannot get canvas context\");\n else\n return ctx;\n }\n return null;\n};\nvar rad2deg = (theta) => Math.round(theta * 180 / Math.PI);\nvar replace = (str, source, target) => str.replace(source, typeof target === \"number\" ? target.toFixed(1) : target);\nvar colorDepth = (z, opt) => {\n if (!opt.useDepth || typeof z === \"undefined\")\n return opt.color;\n const rgb3 = Uint8ClampedArray.from([127 + 2 * z, 127 - 2 * z, 255]);\n return `rgba(${rgb3[0]}, ${rgb3[1]}, ${rgb3[2]}, ${opt.alpha})`;\n};\nfunction labels(ctx, str, startX, startY, localOptions2) {\n const line = str.replace(/\\[.*\\]/g, \"\").split(\"\\n\").map((l) => l.trim());\n const x = Math.max(0, startX);\n for (let i = line.length - 1; i >= 0; i--) {\n const y6 = i * localOptions2.lineHeight + startY;\n if (localOptions2.shadowColor && localOptions2.shadowColor !== \"\") {\n ctx.fillStyle = localOptions2.shadowColor;\n ctx.fillText(line[i], x + 5, y6 + 16);\n }\n ctx.fillStyle = localOptions2.labelColor;\n ctx.fillText(line[i], x + 4, y6 + 15);\n }\n}\nfunction point(ctx, x, y6, z, localOptions2) {\n ctx.fillStyle = colorDepth(z, localOptions2);\n ctx.beginPath();\n ctx.arc(x, y6, localOptions2.pointSize, 0, 2 * Math.PI);\n ctx.fill();\n}\nfunction rect(ctx, x, y6, width, height, localOptions2) {\n ctx.beginPath();\n ctx.lineWidth = localOptions2.lineWidth;\n if (localOptions2.useCurves) {\n const cx2 = (x + x + width) / 2;\n const cy = (y6 + y6 + height) / 2;\n ctx.ellipse(cx2, cy, width / 2, height / 2, 0, 0, 2 * Math.PI);\n } else {\n ctx.moveTo(x + localOptions2.roundRect, y6);\n ctx.lineTo(x + width - localOptions2.roundRect, y6);\n ctx.quadraticCurveTo(x + width, y6, x + width, y6 + localOptions2.roundRect);\n ctx.lineTo(x + width, y6 + height - localOptions2.roundRect);\n ctx.quadraticCurveTo(x + width, y6 + height, x + width - localOptions2.roundRect, y6 + height);\n ctx.lineTo(x + localOptions2.roundRect, y6 + height);\n ctx.quadraticCurveTo(x, y6 + height, x, y6 + height - localOptions2.roundRect);\n ctx.lineTo(x, y6 + localOptions2.roundRect);\n ctx.quadraticCurveTo(x, y6, x + localOptions2.roundRect, y6);\n ctx.closePath();\n }\n ctx.stroke();\n}\nfunction lines(ctx, points, localOptions2) {\n if (points.length < 2)\n return;\n ctx.beginPath();\n ctx.moveTo(points[0][0], points[0][1]);\n for (const pt of points) {\n ctx.strokeStyle = colorDepth(pt[2] || 0, localOptions2);\n ctx.lineTo(Math.trunc(pt[0]), Math.trunc(pt[1]));\n }\n ctx.stroke();\n if (localOptions2.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\nfunction curves(ctx, points, localOptions2) {\n if (points.length < 2)\n return;\n ctx.lineWidth = localOptions2.lineWidth;\n if (!localOptions2.useCurves || points.length <= 2) {\n lines(ctx, points, localOptions2);\n return;\n }\n ctx.moveTo(points[0][0], points[0][1]);\n for (let i = 0; i < points.length - 2; i++) {\n const xc2 = (points[i][0] + points[i + 1][0]) / 2;\n const yc2 = (points[i][1] + points[i + 1][1]) / 2;\n ctx.quadraticCurveTo(points[i][0], points[i][1], xc2, yc2);\n }\n ctx.quadraticCurveTo(points[points.length - 2][0], points[points.length - 2][1], points[points.length - 1][0], points[points.length - 1][1]);\n ctx.stroke();\n if (localOptions2.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\nfunction arrow(ctx, from, to2, radius = 5) {\n let angle;\n let x;\n let y6;\n ctx.beginPath();\n ctx.moveTo(from[0], from[1]);\n ctx.lineTo(to2[0], to2[1]);\n angle = Math.atan2(to2[1] - from[1], to2[0] - from[0]);\n x = radius * Math.cos(angle) + to2[0];\n y6 = radius * Math.sin(angle) + to2[1];\n ctx.moveTo(x, y6);\n angle += 1 / 3 * (2 * Math.PI);\n x = radius * Math.cos(angle) + to2[0];\n y6 = radius * Math.sin(angle) + to2[1];\n ctx.lineTo(x, y6);\n angle += 1 / 3 * (2 * Math.PI);\n x = radius * Math.cos(angle) + to2[0];\n y6 = radius * Math.sin(angle) + to2[1];\n ctx.lineTo(x, y6);\n ctx.closePath();\n ctx.stroke();\n ctx.fill();\n}\n\n// src/draw/options.ts\nvar options2 = {\n color: \"rgba(173, 216, 230, 0.6)\",\n // 'lightblue' with light alpha channel\n labelColor: \"rgba(173, 216, 230, 1)\",\n // 'lightblue' with dark alpha channel\n shadowColor: \"black\",\n alpha: 0.5,\n font: 'small-caps 16px \"Segoe UI\"',\n lineHeight: 18,\n lineWidth: 4,\n pointSize: 2,\n roundRect: 8,\n drawPoints: false,\n drawLabels: true,\n drawBoxes: true,\n drawAttention: true,\n drawGestures: true,\n drawPolygons: true,\n drawGaze: true,\n fillPolygons: false,\n useDepth: true,\n useCurves: false,\n faceLabels: \"\",\n bodyLabels: \"\",\n bodyPartLabels: \"\",\n objectLabels: \"\",\n handLabels: \"\",\n fingerLabels: \"\",\n gestureLabels: \"\"\n};\n\n// src/face/facemeshcoords.ts\nvar meshAnnotations = {\n silhouette: [\n 10,\n 338,\n 297,\n 332,\n 284,\n 251,\n 389,\n 356,\n 454,\n 323,\n 361,\n 288,\n 397,\n 365,\n 379,\n 378,\n 400,\n 377,\n 152,\n 148,\n 176,\n 149,\n 150,\n 136,\n 172,\n 58,\n 132,\n 93,\n 234,\n 127,\n 162,\n 21,\n 54,\n 103,\n 67,\n 109\n ],\n // lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291], // 11\n // lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291], // 10\n // lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308], // 11\n // lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308], // 11\n lipsUpperOuter: [185, 40, 39, 37, 0, 267, 269, 270, 409],\n lipsLowerOuter: [61, 146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [191, 80, 81, 82, 13, 312, 311, 310, 415],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n lipsLowerSemiOuter: [76, 77, 90, 180, 85, 16, 315, 404, 320, 307, 306],\n lipsUpperSemiOuter: [184, 74, 73, 72, 11, 302, 303, 304, 408],\n lipsLowerSemiInner: [62, 96, 89, 179, 86, 15, 316, 403, 319, 325, 292],\n lipsUpperSemiInner: [183, 42, 41, 38, 12, 268, 271, 272, 407],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n // 7\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n // 9\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n // 7\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n // 9\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n // 7\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n // 9\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n // 9\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n // 8\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n // 6\n rightEyeIris: [473, 474, 475, 476, 477],\n // 5\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};\nvar meshLandmarks = {\n count: 468,\n mouth: 13,\n symmetryLine: [13, meshAnnotations.midwayBetweenEyes[0]]\n};\nvar blazeFaceLandmarks = {\n leftEye: 0,\n rightEye: 1,\n nose: 2,\n mouth: 3,\n leftEar: 4,\n rightEar: 5,\n symmetryLine: [3, 2]\n};\nvar irisIndices = [\n // A mapping from facemesh model keypoints to iris model keypoints.\n { key: \"EyeUpper0\", indices: [9, 10, 11, 12, 13, 14, 15] },\n // 7 x 3d\n { key: \"EyeUpper1\", indices: [25, 26, 27, 28, 29, 30, 31] },\n // 7 x 3d\n { key: \"EyeUpper2\", indices: [41, 42, 43, 44, 45, 46, 47] },\n // 7 x 3d\n { key: \"EyeLower0\", indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n // 7 x 3d\n { key: \"EyeLower1\", indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n // 9 x 3d\n { key: \"EyeLower2\", indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n // 9 x 3d\n { key: \"EyeLower3\", indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n // 9 x 3d\n { key: \"EyebrowUpper\", indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n // 8 x 3d\n { key: \"EyebrowLower\", indices: [48, 49, 50, 51, 52, 53] }\n // 6 x 3d\n];\nvar 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];\nvar TRI468 = [\n 127,\n 34,\n 139,\n 11,\n 0,\n 37,\n 232,\n 231,\n 120,\n 72,\n 37,\n 39,\n 128,\n 121,\n 47,\n 232,\n 121,\n 128,\n 104,\n 69,\n 67,\n 175,\n 171,\n 148,\n 157,\n 154,\n 155,\n 118,\n 50,\n 101,\n 73,\n 39,\n 40,\n 9,\n 151,\n 108,\n 48,\n 115,\n 131,\n 194,\n 204,\n 211,\n 74,\n 40,\n 185,\n 80,\n 42,\n 183,\n 40,\n 92,\n 186,\n 230,\n 229,\n 118,\n 202,\n 212,\n 214,\n 83,\n 18,\n 17,\n 76,\n 61,\n 146,\n 160,\n 29,\n 30,\n 56,\n 157,\n 173,\n 106,\n 204,\n 194,\n 135,\n 214,\n 192,\n 203,\n 165,\n 98,\n 21,\n 71,\n 68,\n 51,\n 45,\n 4,\n 144,\n 24,\n 23,\n 77,\n 146,\n 91,\n 205,\n 50,\n 187,\n 201,\n 200,\n 18,\n 91,\n 106,\n 182,\n 90,\n 91,\n 181,\n 85,\n 84,\n 17,\n 206,\n 203,\n 36,\n 148,\n 171,\n 140,\n 92,\n 40,\n 39,\n 193,\n 189,\n 244,\n 159,\n 158,\n 28,\n 247,\n 246,\n 161,\n 236,\n 3,\n 196,\n 54,\n 68,\n 104,\n 193,\n 168,\n 8,\n 117,\n 228,\n 31,\n 189,\n 193,\n 55,\n 98,\n 97,\n 99,\n 126,\n 47,\n 100,\n 166,\n 79,\n 218,\n 155,\n 154,\n 26,\n 209,\n 49,\n 131,\n 135,\n 136,\n 150,\n 47,\n 126,\n 217,\n 223,\n 52,\n 53,\n 45,\n 51,\n 134,\n 211,\n 170,\n 140,\n 67,\n 69,\n 108,\n 43,\n 106,\n 91,\n 230,\n 119,\n 120,\n 226,\n 130,\n 247,\n 63,\n 53,\n 52,\n 238,\n 20,\n 242,\n 46,\n 70,\n 156,\n 78,\n 62,\n 96,\n 46,\n 53,\n 63,\n 143,\n 34,\n 227,\n 173,\n 155,\n 133,\n 123,\n 117,\n 111,\n 44,\n 125,\n 19,\n 236,\n 134,\n 51,\n 216,\n 206,\n 205,\n 154,\n 153,\n 22,\n 39,\n 37,\n 167,\n 200,\n 201,\n 208,\n 36,\n 142,\n 100,\n 57,\n 212,\n 202,\n 20,\n 60,\n 99,\n 28,\n 158,\n 157,\n 35,\n 226,\n 113,\n 160,\n 159,\n 27,\n 204,\n 202,\n 210,\n 113,\n 225,\n 46,\n 43,\n 202,\n 204,\n 62,\n 76,\n 77,\n 137,\n 123,\n 116,\n 41,\n 38,\n 72,\n 203,\n 129,\n 142,\n 64,\n 98,\n 240,\n 49,\n 102,\n 64,\n 41,\n 73,\n 74,\n 212,\n 216,\n 207,\n 42,\n 74,\n 184,\n 169,\n 170,\n 211,\n 170,\n 149,\n 176,\n 105,\n 66,\n 69,\n 122,\n 6,\n 168,\n 123,\n 147,\n 187,\n 96,\n 77,\n 90,\n 65,\n 55,\n 107,\n 89,\n 90,\n 180,\n 101,\n 100,\n 120,\n 63,\n 105,\n 104,\n 93,\n 137,\n 227,\n 15,\n 86,\n 85,\n 129,\n 102,\n 49,\n 14,\n 87,\n 86,\n 55,\n 8,\n 9,\n 100,\n 47,\n 121,\n 145,\n 23,\n 22,\n 88,\n 89,\n 179,\n 6,\n 122,\n 196,\n 88,\n 95,\n 96,\n 138,\n 172,\n 136,\n 215,\n 58,\n 172,\n 115,\n 48,\n 219,\n 42,\n 80,\n 81,\n 195,\n 3,\n 51,\n 43,\n 146,\n 61,\n 171,\n 175,\n 199,\n 81,\n 82,\n 38,\n 53,\n 46,\n 225,\n 144,\n 163,\n 110,\n 246,\n 33,\n 7,\n 52,\n 65,\n 66,\n 229,\n 228,\n 117,\n 34,\n 127,\n 234,\n 107,\n 108,\n 69,\n 109,\n 108,\n 151,\n 48,\n 64,\n 235,\n 62,\n 78,\n 191,\n 129,\n 209,\n 126,\n 111,\n 35,\n 143,\n 163,\n 161,\n 246,\n 117,\n 123,\n 50,\n 222,\n 65,\n 52,\n 19,\n 125,\n 141,\n 221,\n 55,\n 65,\n 3,\n 195,\n 197,\n 25,\n 7,\n 33,\n 220,\n 237,\n 44,\n 70,\n 71,\n 139,\n 122,\n 193,\n 245,\n 247,\n 130,\n 33,\n 71,\n 21,\n 162,\n 153,\n 158,\n 159,\n 170,\n 169,\n 150,\n 188,\n 174,\n 196,\n 216,\n 186,\n 92,\n 144,\n 160,\n 161,\n 2,\n 97,\n 167,\n 141,\n 125,\n 241,\n 164,\n 167,\n 37,\n 72,\n 38,\n 12,\n 145,\n 159,\n 160,\n 38,\n 82,\n 13,\n 63,\n 68,\n 71,\n 226,\n 35,\n 111,\n 158,\n 153,\n 154,\n 101,\n 50,\n 205,\n 206,\n 92,\n 165,\n 209,\n 198,\n 217,\n 165,\n 167,\n 97,\n 220,\n 115,\n 218,\n 133,\n 112,\n 243,\n 239,\n 238,\n 241,\n 214,\n 135,\n 169,\n 190,\n 173,\n 133,\n 171,\n 208,\n 32,\n 125,\n 44,\n 237,\n 86,\n 87,\n 178,\n 85,\n 86,\n 179,\n 84,\n 85,\n 180,\n 83,\n 84,\n 181,\n 201,\n 83,\n 182,\n 137,\n 93,\n 132,\n 76,\n 62,\n 183,\n 61,\n 76,\n 184,\n 57,\n 61,\n 185,\n 212,\n 57,\n 186,\n 214,\n 207,\n 187,\n 34,\n 143,\n 156,\n 79,\n 239,\n 237,\n 123,\n 137,\n 177,\n 44,\n 1,\n 4,\n 201,\n 194,\n 32,\n 64,\n 102,\n 129,\n 213,\n 215,\n 138,\n 59,\n 166,\n 219,\n 242,\n 99,\n 97,\n 2,\n 94,\n 141,\n 75,\n 59,\n 235,\n 24,\n 110,\n 228,\n 25,\n 130,\n 226,\n 23,\n 24,\n 229,\n 22,\n 23,\n 230,\n 26,\n 22,\n 231,\n 112,\n 26,\n 232,\n 189,\n 190,\n 243,\n 221,\n 56,\n 190,\n 28,\n 56,\n 221,\n 27,\n 28,\n 222,\n 29,\n 27,\n 223,\n 30,\n 29,\n 224,\n 247,\n 30,\n 225,\n 238,\n 79,\n 20,\n 166,\n 59,\n 75,\n 60,\n 75,\n 240,\n 147,\n 177,\n 215,\n 20,\n 79,\n 166,\n 187,\n 147,\n 213,\n 112,\n 233,\n 244,\n 233,\n 128,\n 245,\n 128,\n 114,\n 188,\n 114,\n 217,\n 174,\n 131,\n 115,\n 220,\n 217,\n 198,\n 236,\n 198,\n 131,\n 134,\n 177,\n 132,\n 58,\n 143,\n 35,\n 124,\n 110,\n 163,\n 7,\n 228,\n 110,\n 25,\n 356,\n 389,\n 368,\n 11,\n 302,\n 267,\n 452,\n 350,\n 349,\n 302,\n 303,\n 269,\n 357,\n 343,\n 277,\n 452,\n 453,\n 357,\n 333,\n 332,\n 297,\n 175,\n 152,\n 377,\n 384,\n 398,\n 382,\n 347,\n 348,\n 330,\n 303,\n 304,\n 270,\n 9,\n 336,\n 337,\n 278,\n 279,\n 360,\n 418,\n 262,\n 431,\n 304,\n 408,\n 409,\n 310,\n 415,\n 407,\n 270,\n 409,\n 410,\n 450,\n 348,\n 347,\n 422,\n 430,\n 434,\n 313,\n 314,\n 17,\n 306,\n 307,\n 375,\n 387,\n 388,\n 260,\n 286,\n 414,\n 398,\n 335,\n 406,\n 418,\n 364,\n 367,\n 416,\n 423,\n 358,\n 327,\n 251,\n 284,\n 298,\n 281,\n 5,\n 4,\n 373,\n 374,\n 253,\n 307,\n 320,\n 321,\n 425,\n 427,\n 411,\n 421,\n 313,\n 18,\n 321,\n 405,\n 406,\n 320,\n 404,\n 405,\n 315,\n 16,\n 17,\n 426,\n 425,\n 266,\n 377,\n 400,\n 369,\n 322,\n 391,\n 269,\n 417,\n 465,\n 464,\n 386,\n 257,\n 258,\n 466,\n 260,\n 388,\n 456,\n 399,\n 419,\n 284,\n 332,\n 333,\n 417,\n 285,\n 8,\n 346,\n 340,\n 261,\n 413,\n 441,\n 285,\n 327,\n 460,\n 328,\n 355,\n 371,\n 329,\n 392,\n 439,\n 438,\n 382,\n 341,\n 256,\n 429,\n 420,\n 360,\n 364,\n 394,\n 379,\n 277,\n 343,\n 437,\n 443,\n 444,\n 283,\n 275,\n 440,\n 363,\n 431,\n 262,\n 369,\n 297,\n 338,\n 337,\n 273,\n 375,\n 321,\n 450,\n 451,\n 349,\n 446,\n 342,\n 467,\n 293,\n 334,\n 282,\n 458,\n 461,\n 462,\n 276,\n 353,\n 383,\n 308,\n 324,\n 325,\n 276,\n 300,\n 293,\n 372,\n 345,\n 447,\n 382,\n 398,\n 362,\n 352,\n 345,\n 340,\n 274,\n 1,\n 19,\n 456,\n 248,\n 281,\n 436,\n 427,\n 425,\n 381,\n 256,\n 252,\n 269,\n 391,\n 393,\n 200,\n 199,\n 428,\n 266,\n 330,\n 329,\n 287,\n 273,\n 422,\n 250,\n 462,\n 328,\n 258,\n 286,\n 384,\n 265,\n 353,\n 342,\n 387,\n 259,\n 257,\n 424,\n 431,\n 430,\n 342,\n 353,\n 276,\n 273,\n 335,\n 424,\n 292,\n 325,\n 307,\n 366,\n 447,\n 345,\n 271,\n 303,\n 302,\n 423,\n 266,\n 371,\n 294,\n 455,\n 460,\n 279,\n 278,\n 294,\n 271,\n 272,\n 304,\n 432,\n 434,\n 427,\n 272,\n 407,\n 408,\n 394,\n 430,\n 431,\n 395,\n 369,\n 400,\n 334,\n 333,\n 299,\n 351,\n 417,\n 168,\n 352,\n 280,\n 411,\n 325,\n 319,\n 320,\n 295,\n 296,\n 336,\n 319,\n 403,\n 404,\n 330,\n 348,\n 349,\n 293,\n 298,\n 333,\n 323,\n 454,\n 447,\n 15,\n 16,\n 315,\n 358,\n 429,\n 279,\n 14,\n 15,\n 316,\n 285,\n 336,\n 9,\n 329,\n 349,\n 350,\n 374,\n 380,\n 252,\n 318,\n 402,\n 403,\n 6,\n 197,\n 419,\n 318,\n 319,\n 325,\n 367,\n 364,\n 365,\n 435,\n 367,\n 397,\n 344,\n 438,\n 439,\n 272,\n 271,\n 311,\n 195,\n 5,\n 281,\n 273,\n 287,\n 291,\n 396,\n 428,\n 199,\n 311,\n 271,\n 268,\n 283,\n 444,\n 445,\n 373,\n 254,\n 339,\n 263,\n 466,\n 249,\n 282,\n 334,\n 296,\n 449,\n 347,\n 346,\n 264,\n 447,\n 454,\n 336,\n 296,\n 299,\n 338,\n 10,\n 151,\n 278,\n 439,\n 455,\n 292,\n 407,\n 415,\n 358,\n 371,\n 355,\n 340,\n 345,\n 372,\n 390,\n 249,\n 466,\n 346,\n 347,\n 280,\n 442,\n 443,\n 282,\n 19,\n 94,\n 370,\n 441,\n 442,\n 295,\n 248,\n 419,\n 197,\n 263,\n 255,\n 359,\n 440,\n 275,\n 274,\n 300,\n 383,\n 368,\n 351,\n 412,\n 465,\n 263,\n 467,\n 466,\n 301,\n 368,\n 389,\n 380,\n 374,\n 386,\n 395,\n 378,\n 379,\n 412,\n 351,\n 419,\n 436,\n 426,\n 322,\n 373,\n 390,\n 388,\n 2,\n 164,\n 393,\n 370,\n 462,\n 461,\n 164,\n 0,\n 267,\n 302,\n 11,\n 12,\n 374,\n 373,\n 387,\n 268,\n 12,\n 13,\n 293,\n 300,\n 301,\n 446,\n 261,\n 340,\n 385,\n 384,\n 381,\n 330,\n 266,\n 425,\n 426,\n 423,\n 391,\n 429,\n 355,\n 437,\n 391,\n 327,\n 326,\n 440,\n 457,\n 438,\n 341,\n 382,\n 362,\n 459,\n 457,\n 461,\n 434,\n 430,\n 394,\n 414,\n 463,\n 362,\n 396,\n 369,\n 262,\n 354,\n 461,\n 457,\n 316,\n 403,\n 402,\n 315,\n 404,\n 403,\n 314,\n 405,\n 404,\n 313,\n 406,\n 405,\n 421,\n 418,\n 406,\n 366,\n 401,\n 361,\n 306,\n 408,\n 407,\n 291,\n 409,\n 408,\n 287,\n 410,\n 409,\n 432,\n 436,\n 410,\n 434,\n 416,\n 411,\n 264,\n 368,\n 383,\n 309,\n 438,\n 457,\n 352,\n 376,\n 401,\n 274,\n 275,\n 4,\n 421,\n 428,\n 262,\n 294,\n 327,\n 358,\n 433,\n 416,\n 367,\n 289,\n 455,\n 439,\n 462,\n 370,\n 326,\n 2,\n 326,\n 370,\n 305,\n 460,\n 455,\n 254,\n 449,\n 448,\n 255,\n 261,\n 446,\n 253,\n 450,\n 449,\n 252,\n 451,\n 450,\n 256,\n 452,\n 451,\n 341,\n 453,\n 452,\n 413,\n 464,\n 463,\n 441,\n 413,\n 414,\n 258,\n 442,\n 441,\n 257,\n 443,\n 442,\n 259,\n 444,\n 443,\n 260,\n 445,\n 444,\n 467,\n 342,\n 445,\n 459,\n 458,\n 250,\n 289,\n 392,\n 290,\n 290,\n 328,\n 460,\n 376,\n 433,\n 435,\n 250,\n 290,\n 392,\n 411,\n 416,\n 433,\n 341,\n 463,\n 464,\n 453,\n 464,\n 465,\n 357,\n 465,\n 412,\n 343,\n 412,\n 399,\n 360,\n 363,\n 440,\n 437,\n 399,\n 456,\n 420,\n 456,\n 363,\n 401,\n 435,\n 288,\n 372,\n 383,\n 353,\n 339,\n 255,\n 249,\n 448,\n 261,\n 255,\n 133,\n 243,\n 190,\n 133,\n 155,\n 112,\n 33,\n 246,\n 247,\n 33,\n 130,\n 25,\n 398,\n 384,\n 286,\n 362,\n 398,\n 414,\n 362,\n 463,\n 341,\n 263,\n 359,\n 467,\n 263,\n 249,\n 255,\n 466,\n 467,\n 260,\n 75,\n 60,\n 166,\n 238,\n 239,\n 79,\n 162,\n 127,\n 139,\n 72,\n 11,\n 37,\n 121,\n 232,\n 120,\n 73,\n 72,\n 39,\n 114,\n 128,\n 47,\n 233,\n 232,\n 128,\n 103,\n 104,\n 67,\n 152,\n 175,\n 148,\n 173,\n 157,\n 155,\n 119,\n 118,\n 101,\n 74,\n 73,\n 40,\n 107,\n 9,\n 108,\n 49,\n 48,\n 131,\n 32,\n 194,\n 211,\n 184,\n 74,\n 185,\n 191,\n 80,\n 183,\n 185,\n 40,\n 186,\n 119,\n 230,\n 118,\n 210,\n 202,\n 214,\n 84,\n 83,\n 17,\n 77,\n 76,\n 146,\n 161,\n 160,\n 30,\n 190,\n 56,\n 173,\n 182,\n 106,\n 194,\n 138,\n 135,\n 192,\n 129,\n 203,\n 98,\n 54,\n 21,\n 68,\n 5,\n 51,\n 4,\n 145,\n 144,\n 23,\n 90,\n 77,\n 91,\n 207,\n 205,\n 187,\n 83,\n 201,\n 18,\n 181,\n 91,\n 182,\n 180,\n 90,\n 181,\n 16,\n 85,\n 17,\n 205,\n 206,\n 36,\n 176,\n 148,\n 140,\n 165,\n 92,\n 39,\n 245,\n 193,\n 244,\n 27,\n 159,\n 28,\n 30,\n 247,\n 161,\n 174,\n 236,\n 196,\n 103,\n 54,\n 104,\n 55,\n 193,\n 8,\n 111,\n 117,\n 31,\n 221,\n 189,\n 55,\n 240,\n 98,\n 99,\n 142,\n 126,\n 100,\n 219,\n 166,\n 218,\n 112,\n 155,\n 26,\n 198,\n 209,\n 131,\n 169,\n 135,\n 150,\n 114,\n 47,\n 217,\n 224,\n 223,\n 53,\n 220,\n 45,\n 134,\n 32,\n 211,\n 140,\n 109,\n 67,\n 108,\n 146,\n 43,\n 91,\n 231,\n 230,\n 120,\n 113,\n 226,\n 247,\n 105,\n 63,\n 52,\n 241,\n 238,\n 242,\n 124,\n 46,\n 156,\n 95,\n 78,\n 96,\n 70,\n 46,\n 63,\n 116,\n 143,\n 227,\n 116,\n 123,\n 111,\n 1,\n 44,\n 19,\n 3,\n 236,\n 51,\n 207,\n 216,\n 205,\n 26,\n 154,\n 22,\n 165,\n 39,\n 167,\n 199,\n 200,\n 208,\n 101,\n 36,\n 100,\n 43,\n 57,\n 202,\n 242,\n 20,\n 99,\n 56,\n 28,\n 157,\n 124,\n 35,\n 113,\n 29,\n 160,\n 27,\n 211,\n 204,\n 210,\n 124,\n 113,\n 46,\n 106,\n 43,\n 204,\n 96,\n 62,\n 77,\n 227,\n 137,\n 116,\n 73,\n 41,\n 72,\n 36,\n 203,\n 142,\n 235,\n 64,\n 240,\n 48,\n 49,\n 64,\n 42,\n 41,\n 74,\n 214,\n 212,\n 207,\n 183,\n 42,\n 184,\n 210,\n 169,\n 211,\n 140,\n 170,\n 176,\n 104,\n 105,\n 69,\n 193,\n 122,\n 168,\n 50,\n 123,\n 187,\n 89,\n 96,\n 90,\n 66,\n 65,\n 107,\n 179,\n 89,\n 180,\n 119,\n 101,\n 120,\n 68,\n 63,\n 104,\n 234,\n 93,\n 227,\n 16,\n 15,\n 85,\n 209,\n 129,\n 49,\n 15,\n 14,\n 86,\n 107,\n 55,\n 9,\n 120,\n 100,\n 121,\n 153,\n 145,\n 22,\n 178,\n 88,\n 179,\n 197,\n 6,\n 196,\n 89,\n 88,\n 96,\n 135,\n 138,\n 136,\n 138,\n 215,\n 172,\n 218,\n 115,\n 219,\n 41,\n 42,\n 81,\n 5,\n 195,\n 51,\n 57,\n 43,\n 61,\n 208,\n 171,\n 199,\n 41,\n 81,\n 38,\n 224,\n 53,\n 225,\n 24,\n 144,\n 110,\n 105,\n 52,\n 66,\n 118,\n 229,\n 117,\n 227,\n 34,\n 234,\n 66,\n 107,\n 69,\n 10,\n 109,\n 151,\n 219,\n 48,\n 235,\n 183,\n 62,\n 191,\n 142,\n 129,\n 126,\n 116,\n 111,\n 143,\n 7,\n 163,\n 246,\n 118,\n 117,\n 50,\n 223,\n 222,\n 52,\n 94,\n 19,\n 141,\n 222,\n 221,\n 65,\n 196,\n 3,\n 197,\n 45,\n 220,\n 44,\n 156,\n 70,\n 139,\n 188,\n 122,\n 245,\n 139,\n 71,\n 162,\n 145,\n 153,\n 159,\n 149,\n 170,\n 150,\n 122,\n 188,\n 196,\n 206,\n 216,\n 92,\n 163,\n 144,\n 161,\n 164,\n 2,\n 167,\n 242,\n 141,\n 241,\n 0,\n 164,\n 37,\n 11,\n 72,\n 12,\n 144,\n 145,\n 160,\n 12,\n 38,\n 13,\n 70,\n 63,\n 71,\n 31,\n 226,\n 111,\n 157,\n 158,\n 154,\n 36,\n 101,\n 205,\n 203,\n 206,\n 165,\n 126,\n 209,\n 217,\n 98,\n 165,\n 97,\n 237,\n 220,\n 218,\n 237,\n 239,\n 241,\n 210,\n 214,\n 169,\n 140,\n 171,\n 32,\n 241,\n 125,\n 237,\n 179,\n 86,\n 178,\n 180,\n 85,\n 179,\n 181,\n 84,\n 180,\n 182,\n 83,\n 181,\n 194,\n 201,\n 182,\n 177,\n 137,\n 132,\n 184,\n 76,\n 183,\n 185,\n 61,\n 184,\n 186,\n 57,\n 185,\n 216,\n 212,\n 186,\n 192,\n 214,\n 187,\n 139,\n 34,\n 156,\n 218,\n 79,\n 237,\n 147,\n 123,\n 177,\n 45,\n 44,\n 4,\n 208,\n 201,\n 32,\n 98,\n 64,\n 129,\n 192,\n 213,\n 138,\n 235,\n 59,\n 219,\n 141,\n 242,\n 97,\n 97,\n 2,\n 141,\n 240,\n 75,\n 235,\n 229,\n 24,\n 228,\n 31,\n 25,\n 226,\n 230,\n 23,\n 229,\n 231,\n 22,\n 230,\n 232,\n 26,\n 231,\n 233,\n 112,\n 232,\n 244,\n 189,\n 243,\n 189,\n 221,\n 190,\n 222,\n 28,\n 221,\n 223,\n 27,\n 222,\n 224,\n 29,\n 223,\n 225,\n 30,\n 224,\n 113,\n 247,\n 225,\n 99,\n 60,\n 240,\n 213,\n 147,\n 215,\n 60,\n 20,\n 166,\n 192,\n 187,\n 213,\n 243,\n 112,\n 244,\n 244,\n 233,\n 245,\n 245,\n 128,\n 188,\n 188,\n 114,\n 174,\n 134,\n 131,\n 220,\n 174,\n 217,\n 236,\n 236,\n 198,\n 134,\n 215,\n 177,\n 58,\n 156,\n 143,\n 124,\n 25,\n 110,\n 7,\n 31,\n 228,\n 25,\n 264,\n 356,\n 368,\n 0,\n 11,\n 267,\n 451,\n 452,\n 349,\n 267,\n 302,\n 269,\n 350,\n 357,\n 277,\n 350,\n 452,\n 357,\n 299,\n 333,\n 297,\n 396,\n 175,\n 377,\n 381,\n 384,\n 382,\n 280,\n 347,\n 330,\n 269,\n 303,\n 270,\n 151,\n 9,\n 337,\n 344,\n 278,\n 360,\n 424,\n 418,\n 431,\n 270,\n 304,\n 409,\n 272,\n 310,\n 407,\n 322,\n 270,\n 410,\n 449,\n 450,\n 347,\n 432,\n 422,\n 434,\n 18,\n 313,\n 17,\n 291,\n 306,\n 375,\n 259,\n 387,\n 260,\n 424,\n 335,\n 418,\n 434,\n 364,\n 416,\n 391,\n 423,\n 327,\n 301,\n 251,\n 298,\n 275,\n 281,\n 4,\n 254,\n 373,\n 253,\n 375,\n 307,\n 321,\n 280,\n 425,\n 411,\n 200,\n 421,\n 18,\n 335,\n 321,\n 406,\n 321,\n 320,\n 405,\n 314,\n 315,\n 17,\n 423,\n 426,\n 266,\n 396,\n 377,\n 369,\n 270,\n 322,\n 269,\n 413,\n 417,\n 464,\n 385,\n 386,\n 258,\n 248,\n 456,\n 419,\n 298,\n 284,\n 333,\n 168,\n 417,\n 8,\n 448,\n 346,\n 261,\n 417,\n 413,\n 285,\n 326,\n 327,\n 328,\n 277,\n 355,\n 329,\n 309,\n 392,\n 438,\n 381,\n 382,\n 256,\n 279,\n 429,\n 360,\n 365,\n 364,\n 379,\n 355,\n 277,\n 437,\n 282,\n 443,\n 283,\n 281,\n 275,\n 363,\n 395,\n 431,\n 369,\n 299,\n 297,\n 337,\n 335,\n 273,\n 321,\n 348,\n 450,\n 349,\n 359,\n 446,\n 467,\n 283,\n 293,\n 282,\n 250,\n 458,\n 462,\n 300,\n 276,\n 383,\n 292,\n 308,\n 325,\n 283,\n 276,\n 293,\n 264,\n 372,\n 447,\n 346,\n 352,\n 340,\n 354,\n 274,\n 19,\n 363,\n 456,\n 281,\n 426,\n 436,\n 425,\n 380,\n 381,\n 252,\n 267,\n 269,\n 393,\n 421,\n 200,\n 428,\n 371,\n 266,\n 329,\n 432,\n 287,\n 422,\n 290,\n 250,\n 328,\n 385,\n 258,\n 384,\n 446,\n 265,\n 342,\n 386,\n 387,\n 257,\n 422,\n 424,\n 430,\n 445,\n 342,\n 276,\n 422,\n 273,\n 424,\n 306,\n 292,\n 307,\n 352,\n 366,\n 345,\n 268,\n 271,\n 302,\n 358,\n 423,\n 371,\n 327,\n 294,\n 460,\n 331,\n 279,\n 294,\n 303,\n 271,\n 304,\n 436,\n 432,\n 427,\n 304,\n 272,\n 408,\n 395,\n 394,\n 431,\n 378,\n 395,\n 400,\n 296,\n 334,\n 299,\n 6,\n 351,\n 168,\n 376,\n 352,\n 411,\n 307,\n 325,\n 320,\n 285,\n 295,\n 336,\n 320,\n 319,\n 404,\n 329,\n 330,\n 349,\n 334,\n 293,\n 333,\n 366,\n 323,\n 447,\n 316,\n 15,\n 315,\n 331,\n 358,\n 279,\n 317,\n 14,\n 316,\n 8,\n 285,\n 9,\n 277,\n 329,\n 350,\n 253,\n 374,\n 252,\n 319,\n 318,\n 403,\n 351,\n 6,\n 419,\n 324,\n 318,\n 325,\n 397,\n 367,\n 365,\n 288,\n 435,\n 397,\n 278,\n 344,\n 439,\n 310,\n 272,\n 311,\n 248,\n 195,\n 281,\n 375,\n 273,\n 291,\n 175,\n 396,\n 199,\n 312,\n 311,\n 268,\n 276,\n 283,\n 445,\n 390,\n 373,\n 339,\n 295,\n 282,\n 296,\n 448,\n 449,\n 346,\n 356,\n 264,\n 454,\n 337,\n 336,\n 299,\n 337,\n 338,\n 151,\n 294,\n 278,\n 455,\n 308,\n 292,\n 415,\n 429,\n 358,\n 355,\n 265,\n 340,\n 372,\n 388,\n 390,\n 466,\n 352,\n 346,\n 280,\n 295,\n 442,\n 282,\n 354,\n 19,\n 370,\n 285,\n 441,\n 295,\n 195,\n 248,\n 197,\n 457,\n 440,\n 274,\n 301,\n 300,\n 368,\n 417,\n 351,\n 465,\n 251,\n 301,\n 389,\n 385,\n 380,\n 386,\n 394,\n 395,\n 379,\n 399,\n 412,\n 419,\n 410,\n 436,\n 322,\n 387,\n 373,\n 388,\n 326,\n 2,\n 393,\n 354,\n 370,\n 461,\n 393,\n 164,\n 267,\n 268,\n 302,\n 12,\n 386,\n 374,\n 387,\n 312,\n 268,\n 13,\n 298,\n 293,\n 301,\n 265,\n 446,\n 340,\n 380,\n 385,\n 381,\n 280,\n 330,\n 425,\n 322,\n 426,\n 391,\n 420,\n 429,\n 437,\n 393,\n 391,\n 326,\n 344,\n 440,\n 438,\n 458,\n 459,\n 461,\n 364,\n 434,\n 394,\n 428,\n 396,\n 262,\n 274,\n 354,\n 457,\n 317,\n 316,\n 402,\n 316,\n 315,\n 403,\n 315,\n 314,\n 404,\n 314,\n 313,\n 405,\n 313,\n 421,\n 406,\n 323,\n 366,\n 361,\n 292,\n 306,\n 407,\n 306,\n 291,\n 408,\n 291,\n 287,\n 409,\n 287,\n 432,\n 410,\n 427,\n 434,\n 411,\n 372,\n 264,\n 383,\n 459,\n 309,\n 457,\n 366,\n 352,\n 401,\n 1,\n 274,\n 4,\n 418,\n 421,\n 262,\n 331,\n 294,\n 358,\n 435,\n 433,\n 367,\n 392,\n 289,\n 439,\n 328,\n 462,\n 326,\n 94,\n 2,\n 370,\n 289,\n 305,\n 455,\n 339,\n 254,\n 448,\n 359,\n 255,\n 446,\n 254,\n 253,\n 449,\n 253,\n 252,\n 450,\n 252,\n 256,\n 451,\n 256,\n 341,\n 452,\n 414,\n 413,\n 463,\n 286,\n 441,\n 414,\n 286,\n 258,\n 441,\n 258,\n 257,\n 442,\n 257,\n 259,\n 443,\n 259,\n 260,\n 444,\n 260,\n 467,\n 445,\n 309,\n 459,\n 250,\n 305,\n 289,\n 290,\n 305,\n 290,\n 460,\n 401,\n 376,\n 435,\n 309,\n 250,\n 392,\n 376,\n 411,\n 433,\n 453,\n 341,\n 464,\n 357,\n 453,\n 465,\n 343,\n 357,\n 412,\n 437,\n 343,\n 399,\n 344,\n 360,\n 440,\n 420,\n 437,\n 456,\n 360,\n 420,\n 363,\n 361,\n 401,\n 288,\n 265,\n 372,\n 353,\n 390,\n 339,\n 249,\n 339,\n 448,\n 255\n];\nvar VTX68 = [\n /* cont */\n 127,\n 234,\n 132,\n 58,\n 172,\n 150,\n 149,\n 148,\n 152,\n 377,\n 378,\n 379,\n 397,\n 288,\n 361,\n 454,\n 356,\n /* brows */\n 70,\n 63,\n 105,\n 66,\n 107,\n 336,\n 296,\n 334,\n 293,\n 300,\n /* nose */\n 168,\n 6,\n 195,\n 4,\n 98,\n 97,\n 2,\n 326,\n 327,\n /* eyes */\n 33,\n 160,\n 158,\n 133,\n 153,\n 144,\n 362,\n 385,\n 387,\n 263,\n 373,\n 380,\n /* lip */\n 57,\n 40,\n 37,\n 0,\n 267,\n 270,\n 287,\n 321,\n 314,\n 17,\n 84,\n 91,\n /* mouth */\n 78,\n 81,\n 13,\n 311,\n 308,\n 402,\n 14,\n 178\n];\nvar 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];\nvar VTX7 = [33, 133, 362, 263, 1, 78, 308];\nvar UV68 = VTX68.map((x) => UV468[x]);\nvar UV33 = VTX33.map((x) => UV468[x]);\nvar UV7 = VTX7.map((x) => UV468[x]);\nfunction connectionsToIndices(connections) {\n const indices = connections.map((connection) => connection[0]);\n indices.push(connections[connections.length - 1][1]);\n return indices;\n}\nvar pairsLips = [\n [61, 146],\n [146, 91],\n [91, 181],\n [181, 84],\n [84, 17],\n [17, 314],\n [314, 405],\n [405, 321],\n [321, 375],\n [375, 291],\n [61, 185],\n [185, 40],\n [40, 39],\n [39, 37],\n [37, 0],\n [0, 267],\n [267, 269],\n [269, 270],\n [270, 409],\n [409, 291],\n [78, 95],\n [95, 88],\n [88, 178],\n [178, 87],\n [87, 14],\n [14, 317],\n [317, 402],\n [402, 318],\n [318, 324],\n [324, 308],\n [78, 191],\n [191, 80],\n [80, 81],\n [81, 82],\n [82, 13],\n [13, 312],\n [312, 311],\n [311, 310],\n [310, 415],\n [415, 308]\n];\nvar pairsLeftEye = [[263, 249], [249, 390], [390, 373], [373, 374], [374, 380], [380, 381], [381, 382], [382, 362], [263, 466], [466, 388], [388, 387], [387, 386], [386, 385], [385, 384], [384, 398], [398, 362]];\nvar pairsLeftEyebrow = [[276, 283], [283, 282], [282, 295], [295, 285], [300, 293], [293, 334], [334, 296], [296, 336]];\nvar pairsLeftIris = [[474, 475], [475, 476], [476, 477], [477, 474]];\nvar pairsRightEye = [[33, 7], [7, 163], [163, 144], [144, 145], [145, 153], [153, 154], [154, 155], [155, 133], [33, 246], [246, 161], [161, 160], [160, 159], [159, 158], [158, 157], [157, 173], [173, 133]];\nvar pairsRightEyebrow = [[46, 53], [53, 52], [52, 65], [65, 55], [70, 63], [63, 105], [105, 66], [66, 107]];\nvar pairsRightIris = [[469, 470], [470, 471], [471, 472], [472, 469]];\nvar pairsFaceContour = [\n [10, 338],\n [338, 297],\n [297, 332],\n [332, 284],\n [284, 251],\n [251, 389],\n [389, 356],\n [356, 454],\n [454, 323],\n [323, 361],\n [361, 288],\n [288, 397],\n [397, 365],\n [365, 379],\n [379, 378],\n [378, 400],\n [400, 377],\n [377, 152],\n [152, 148],\n [148, 176],\n [176, 149],\n [149, 150],\n [150, 136],\n [136, 172],\n [172, 58],\n [58, 132],\n [132, 93],\n [93, 234],\n [234, 127],\n [127, 162],\n [162, 21],\n [21, 54],\n [54, 103],\n [103, 67],\n [67, 109],\n [109, 10]\n];\nvar contourKeypoints = {\n lips: connectionsToIndices(pairsLips),\n leftEye: connectionsToIndices(pairsLeftEye),\n leftEyebrow: connectionsToIndices(pairsLeftEyebrow),\n leftIris: connectionsToIndices(pairsLeftIris),\n rightEye: connectionsToIndices(pairsRightEye),\n rightEyebrow: connectionsToIndices(pairsRightEyebrow),\n rightIris: connectionsToIndices(pairsRightIris),\n faceOval: connectionsToIndices(pairsFaceContour)\n};\n\n// src/face/constants.ts\nvar LIPS_CONNECTIONS = [\n [61, 146],\n [146, 91],\n [91, 181],\n [181, 84],\n [84, 17],\n [17, 314],\n [314, 405],\n [405, 321],\n [321, 375],\n [375, 291],\n [61, 185],\n [185, 40],\n [40, 39],\n [39, 37],\n [37, 0],\n [0, 267],\n [267, 269],\n [269, 270],\n [270, 409],\n [409, 291],\n [78, 95],\n [95, 88],\n [88, 178],\n [178, 87],\n [87, 14],\n [14, 317],\n [317, 402],\n [402, 318],\n [318, 324],\n [324, 308],\n [78, 191],\n [191, 80],\n [80, 81],\n [81, 82],\n [82, 13],\n [13, 312],\n [312, 311],\n [311, 310],\n [310, 415],\n [415, 308]\n];\nvar LEFT_EYE_CONNECTIONS = [[263, 249], [249, 390], [390, 373], [373, 374], [374, 380], [380, 381], [381, 382], [382, 362], [263, 466], [466, 388], [388, 387], [387, 386], [386, 385], [385, 384], [384, 398], [398, 362]];\nvar LEFT_EYEBROW_CONNECTIONS = [[276, 283], [283, 282], [282, 295], [295, 285], [300, 293], [293, 334], [334, 296], [296, 336]];\nvar LEFT_IRIS_CONNECTIONS = [[474, 475], [475, 476], [476, 477], [477, 474]];\nvar RIGHT_EYE_CONNECTIONS = [[33, 7], [7, 163], [163, 144], [144, 145], [145, 153], [153, 154], [154, 155], [155, 133], [33, 246], [246, 161], [161, 160], [160, 159], [159, 158], [158, 157], [157, 173], [173, 133]];\nvar RIGHT_EYEBROW_CONNECTIONS = [[46, 53], [53, 52], [52, 65], [65, 55], [70, 63], [63, 105], [105, 66], [66, 107]];\nvar RIGHT_IRIS_CONNECTIONS = [[469, 470], [470, 471], [471, 472], [472, 469]];\nvar FACE_OVAL_CONNECTIONS = [\n [10, 338],\n [338, 297],\n [297, 332],\n [332, 284],\n [284, 251],\n [251, 389],\n [389, 356],\n [356, 454],\n [454, 323],\n [323, 361],\n [361, 288],\n [288, 397],\n [397, 365],\n [365, 379],\n [379, 378],\n [378, 400],\n [400, 377],\n [377, 152],\n [152, 148],\n [148, 176],\n [176, 149],\n [149, 150],\n [150, 136],\n [136, 172],\n [172, 58],\n [58, 132],\n [132, 93],\n [93, 234],\n [234, 127],\n [127, 162],\n [162, 21],\n [21, 54],\n [54, 103],\n [103, 67],\n [67, 109],\n [109, 10]\n];\nfunction connectionsToIndices2(connections) {\n const indices = connections.map((connection) => connection[0]);\n indices.push(connections[connections.length - 1][1]);\n return indices;\n}\nvar MEDIAPIPE_FACE_MESH_KEYPOINTS_BY_CONTOUR = {\n lips: connectionsToIndices2(LIPS_CONNECTIONS),\n leftEye: connectionsToIndices2(LEFT_EYE_CONNECTIONS),\n leftEyebrow: connectionsToIndices2(LEFT_EYEBROW_CONNECTIONS),\n leftIris: connectionsToIndices2(LEFT_IRIS_CONNECTIONS),\n rightEye: connectionsToIndices2(RIGHT_EYE_CONNECTIONS),\n rightEyebrow: connectionsToIndices2(RIGHT_EYEBROW_CONNECTIONS),\n rightIris: connectionsToIndices2(RIGHT_IRIS_CONNECTIONS),\n faceOval: connectionsToIndices2(FACE_OVAL_CONNECTIONS)\n};\nvar indexLabelPairs = Object.entries(MEDIAPIPE_FACE_MESH_KEYPOINTS_BY_CONTOUR).map(([label, indices]) => indices.map((index2) => [index2, label])).flat();\nvar MEDIAPIPE_FACE_MESH_KEYPOINTS = new Map(indexLabelPairs);\nvar LANDMARKS_REFINEMENT_LIPS_CONFIG = [\n 61,\n 146,\n 91,\n 181,\n 84,\n 17,\n 314,\n 405,\n 321,\n 375,\n 291,\n // Lower outer.\n 185,\n 40,\n 39,\n 37,\n 0,\n 267,\n 269,\n 270,\n 409,\n // Upper outer(excluding corners).\n 78,\n 95,\n 88,\n 178,\n 87,\n 14,\n 317,\n 402,\n 318,\n 324,\n 308,\n // Lower inner.\n 191,\n 80,\n 81,\n 82,\n 13,\n 312,\n 311,\n 310,\n 415,\n // Upper inner(excluding corners).\n 76,\n 77,\n 90,\n 180,\n 85,\n 16,\n 315,\n 404,\n 320,\n 307,\n 306,\n // Lower semi - outer.\n 184,\n 74,\n 73,\n 72,\n 11,\n 302,\n 303,\n 304,\n 408,\n // Upper semi - outer(excluding corners).\n 62,\n 96,\n 89,\n 179,\n 86,\n 15,\n 316,\n 403,\n 319,\n 325,\n 292,\n // Lower semi - inner.\n 183,\n 42,\n 41,\n 38,\n 12,\n 268,\n 271,\n 272,\n 407\n // Upper semi - inner(excluding corners).\n];\nvar LANDMARKS_REFINEMENT_LEFT_EYE_CONFIG = [\n 33,\n 7,\n 163,\n 144,\n 145,\n 153,\n 154,\n 155,\n 133,\n // Lower contour.\n 246,\n 161,\n 160,\n 159,\n 158,\n 157,\n 173,\n // upper contour (excluding corners).\n 130,\n 25,\n 110,\n 24,\n 23,\n 22,\n 26,\n 112,\n 243,\n // Halo x2 lower contour.\n 247,\n 30,\n 29,\n 27,\n 28,\n 56,\n 190,\n // Halo x2 upper contour (excluding corners).\n 226,\n 31,\n 228,\n 229,\n 230,\n 231,\n 232,\n 233,\n 244,\n // Halo x3 lower contour.\n 113,\n 225,\n 224,\n 223,\n 222,\n 221,\n 189,\n // Halo x3 upper contour (excluding corners).\n 35,\n 124,\n 46,\n 53,\n 52,\n 65,\n // Halo x4 upper contour (no lower because of mesh structure) or eyebrow inner contour.\n 143,\n 111,\n 117,\n 118,\n 119,\n 120,\n 121,\n 128,\n 245,\n // Halo x5 lower contour.\n 156,\n 70,\n 63,\n 105,\n 66,\n 107,\n 55,\n 193\n // Halo x5 upper contour (excluding corners) or eyebrow outer contour.\n];\nvar LANDMARKS_REFINEMENT_RIGHT_EYE_CONFIG = [\n 263,\n 249,\n 390,\n 373,\n 374,\n 380,\n 381,\n 382,\n 362,\n // Lower contour.\n 466,\n 388,\n 387,\n 386,\n 385,\n 384,\n 398,\n // Upper contour (excluding corners).\n 359,\n 255,\n 339,\n 254,\n 253,\n 252,\n 256,\n 341,\n 463,\n // Halo x2 lower contour.\n 467,\n 260,\n 259,\n 257,\n 258,\n 286,\n 414,\n // Halo x2 upper contour (excluding corners).\n 446,\n 261,\n 448,\n 449,\n 450,\n 451,\n 452,\n 453,\n 464,\n // Halo x3 lower contour.\n 342,\n 445,\n 444,\n 443,\n 442,\n 441,\n 413,\n // Halo x3 upper contour (excluding corners).\n 265,\n 353,\n 276,\n 283,\n 282,\n 295,\n // Halo x4 upper contour (no lower because of mesh structure) or/ eyebrow inner contour.\n 372,\n 340,\n 346,\n 347,\n 348,\n 349,\n 350,\n 357,\n 465,\n // Halo x5 lower contour.\n 383,\n 300,\n 293,\n 334,\n 296,\n 336,\n 285,\n 417\n // Halo x5 upper contour (excluding corners) or eyebrow outer contour.\n];\n\n// src/draw/face.ts\nvar localOptions;\nfunction drawLabels(f, ctx) {\n var _a2, _b2, _c2, _d2, _e, _f2, _g2, _h2, _i2;\n if (!localOptions.drawLabels || ((_a2 = localOptions.faceLabels) == null ? void 0 : _a2.length) === 0)\n return;\n let l = localOptions.faceLabels.slice();\n if (f.score)\n l = replace(l, \"[score]\", 100 * f.score);\n if (f.gender)\n l = replace(l, \"[gender]\", f.gender);\n if (f.genderScore)\n l = replace(l, \"[genderScore]\", 100 * f.genderScore);\n if (f.age)\n l = replace(l, \"[age]\", f.age);\n if (f.distance)\n l = replace(l, \"[distance]\", 100 * f.distance);\n if (f.real)\n l = replace(l, \"[real]\", 100 * f.real);\n if (f.live)\n l = replace(l, \"[live]\", 100 * f.live);\n if (f.emotion && f.emotion.length > 0) {\n const emotion2 = f.emotion.map((a) => `${Math.trunc(100 * a.score)}% ${a.emotion}`);\n if (emotion2.length > 3)\n emotion2.length = 3;\n l = replace(l, \"[emotions]\", emotion2.join(\" \"));\n }\n if ((_c2 = (_b2 = f.rotation) == null ? void 0 : _b2.angle) == null ? void 0 : _c2.roll)\n l = replace(l, \"[roll]\", rad2deg(f.rotation.angle.roll));\n if ((_e = (_d2 = f.rotation) == null ? void 0 : _d2.angle) == null ? void 0 : _e.yaw)\n l = replace(l, \"[yaw]\", rad2deg(f.rotation.angle.yaw));\n if ((_g2 = (_f2 = f.rotation) == null ? void 0 : _f2.angle) == null ? void 0 : _g2.pitch)\n l = replace(l, \"[pitch]\", rad2deg(f.rotation.angle.pitch));\n if ((_i2 = (_h2 = f.rotation) == null ? void 0 : _h2.gaze) == null ? void 0 : _i2.bearing)\n l = replace(l, \"[gaze]\", rad2deg(f.rotation.gaze.bearing));\n labels(ctx, l, f.box[0], f.box[1], localOptions);\n}\nfunction drawIrisElipse(f, ctx) {\n var _a2, _b2, _c2, _d2;\n if (((_a2 = f.annotations) == null ? void 0 : _a2.leftEyeIris) && ((_b2 = f.annotations) == null ? void 0 : _b2.leftEyeIris[0])) {\n ctx.strokeStyle = localOptions.useDepth ? \"rgba(255, 200, 255, 0.3)\" : localOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.leftEyeIris[3][0] - f.annotations.leftEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.leftEyeIris[4][1] - f.annotations.leftEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.leftEyeIris[0][0], f.annotations.leftEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (localOptions.fillPolygons) {\n ctx.fillStyle = localOptions.useDepth ? \"rgba(255, 255, 200, 0.3)\" : localOptions.color;\n ctx.fill();\n }\n }\n if (((_c2 = f.annotations) == null ? void 0 : _c2.rightEyeIris) && ((_d2 = f.annotations) == null ? void 0 : _d2.rightEyeIris[0])) {\n ctx.strokeStyle = localOptions.useDepth ? \"rgba(255, 200, 255, 0.3)\" : localOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.rightEyeIris[3][0] - f.annotations.rightEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.rightEyeIris[4][1] - f.annotations.rightEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.rightEyeIris[0][0], f.annotations.rightEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (localOptions.fillPolygons) {\n ctx.fillStyle = localOptions.useDepth ? \"rgba(255, 255, 200, 0.3)\" : localOptions.color;\n ctx.fill();\n }\n }\n}\nfunction drawGazeSpheres(f, ctx) {\n var _a2;\n if (localOptions.drawGaze && ((_a2 = f.rotation) == null ? void 0 : _a2.angle) && typeof Path2D !== \"undefined\") {\n ctx.strokeStyle = \"pink\";\n const valX = f.box[0] + f.box[2] / 2 - f.box[3] * rad2deg(f.rotation.angle.yaw) / 90;\n const valY = f.box[1] + f.box[3] / 2 + f.box[2] * rad2deg(f.rotation.angle.pitch) / 90;\n const pathV = new Path2D(`\n M ${f.box[0] + f.box[2] / 2} ${f.box[1]}\n C\n ${valX} ${f.box[1]},\n ${valX} ${f.box[1] + f.box[3]},\n ${f.box[0] + f.box[2] / 2} ${f.box[1] + f.box[3]}\n `);\n const pathH = new Path2D(`\n M ${f.box[0]} ${f.box[1] + f.box[3] / 2}\n C \n ${f.box[0]} ${valY},\n ${f.box[0] + f.box[2]} ${valY},\n ${f.box[0] + f.box[2]} ${f.box[1] + f.box[3] / 2}\n `);\n ctx.stroke(pathH);\n ctx.stroke(pathV);\n }\n}\nfunction drawGazeArrows(f, ctx) {\n var _a2;\n if (localOptions.drawGaze && ((_a2 = f.rotation) == null ? void 0 : _a2.gaze.strength) && f.rotation.gaze.bearing && f.annotations.leftEyeIris && f.annotations.rightEyeIris && f.annotations.leftEyeIris[0] && f.annotations.rightEyeIris[0]) {\n ctx.strokeStyle = \"pink\";\n ctx.fillStyle = \"pink\";\n const leftGaze = [\n f.annotations.leftEyeIris[0][0] + Math.sin(f.rotation.gaze.bearing) * f.rotation.gaze.strength * f.box[3],\n f.annotations.leftEyeIris[0][1] + Math.cos(f.rotation.gaze.bearing) * f.rotation.gaze.strength * f.box[2]\n ];\n arrow(ctx, [f.annotations.leftEyeIris[0][0], f.annotations.leftEyeIris[0][1]], [leftGaze[0], leftGaze[1]], 4);\n const rightGaze = [\n f.annotations.rightEyeIris[0][0] + Math.sin(f.rotation.gaze.bearing) * f.rotation.gaze.strength * f.box[3],\n f.annotations.rightEyeIris[0][1] + Math.cos(f.rotation.gaze.bearing) * f.rotation.gaze.strength * f.box[2]\n ];\n arrow(ctx, [f.annotations.rightEyeIris[0][0], f.annotations.rightEyeIris[0][1]], [rightGaze[0], rightGaze[1]], 4);\n }\n}\nfunction drawFacePolygons(f, ctx) {\n if (localOptions.drawPolygons && f.mesh.length >= 468) {\n ctx.lineWidth = 1;\n for (let i = 0; i < TRI468.length / 3; i++) {\n const points = [TRI468[i * 3 + 0], TRI468[i * 3 + 1], TRI468[i * 3 + 2]].map((index2) => f.mesh[index2]);\n lines(ctx, points, localOptions);\n }\n drawIrisElipse(f, ctx);\n }\n}\nfunction drawFacePoints(f, ctx) {\n if (localOptions.drawPoints) {\n if ((f == null ? void 0 : f.mesh.length) >= 468) {\n for (let i = 0; i < f.mesh.length; i++) {\n point(ctx, f.mesh[i][0], f.mesh[i][1], f.mesh[i][2], localOptions);\n if (localOptions.drawAttention) {\n if (LANDMARKS_REFINEMENT_LIPS_CONFIG.includes(i))\n point(ctx, f.mesh[i][0], f.mesh[i][1], f.mesh[i][2] + 127, localOptions);\n if (LANDMARKS_REFINEMENT_LEFT_EYE_CONFIG.includes(i))\n point(ctx, f.mesh[i][0], f.mesh[i][1], f.mesh[i][2] - 127, localOptions);\n if (LANDMARKS_REFINEMENT_RIGHT_EYE_CONFIG.includes(i))\n point(ctx, f.mesh[i][0], f.mesh[i][1], f.mesh[i][2] - 127, localOptions);\n }\n }\n } else {\n for (const [k, v10] of Object.entries((f == null ? void 0 : f.annotations) || {})) {\n if (!(v10 == null ? void 0 : v10[0]))\n continue;\n const pt = v10[0];\n point(ctx, pt[0], pt[1], 0, localOptions);\n if (localOptions.drawLabels)\n labels(ctx, k, pt[0], pt[1], localOptions);\n }\n }\n }\n}\nfunction drawFaceBoxes(f, ctx) {\n if (localOptions.drawBoxes) {\n rect(ctx, f.box[0], f.box[1], f.box[2], f.box[3], localOptions);\n }\n}\nfunction face(inCanvas2, result, drawOptions) {\n localOptions = mergeDeep(options2, drawOptions);\n if (!result || !inCanvas2)\n return;\n const ctx = getCanvasContext(inCanvas2);\n if (!ctx)\n return;\n ctx.font = localOptions.font;\n ctx.strokeStyle = localOptions.color;\n ctx.fillStyle = localOptions.color;\n for (const f of result) {\n drawFaceBoxes(f, ctx);\n drawLabels(f, ctx);\n if (f.mesh && f.mesh.length > 0) {\n drawFacePoints(f, ctx);\n drawFacePolygons(f, ctx);\n drawGazeSpheres(f, ctx);\n drawGazeArrows(f, ctx);\n }\n }\n}\n\n// src/draw/body.ts\nfunction body(inCanvas2, result, drawOptions) {\n var _a2, _b2;\n const localOptions2 = mergeDeep(options2, drawOptions);\n if (!result || !inCanvas2)\n return;\n const ctx = getCanvasContext(inCanvas2);\n if (!ctx)\n return;\n ctx.lineJoin = \"round\";\n for (let i = 0; i < result.length; i++) {\n ctx.strokeStyle = localOptions2.color;\n ctx.fillStyle = localOptions2.color;\n ctx.lineWidth = localOptions2.lineWidth;\n ctx.font = localOptions2.font;\n if (localOptions2.drawBoxes && result[i].box && result[i].box.length === 4) {\n rect(ctx, result[i].box[0], result[i].box[1], result[i].box[2], result[i].box[3], localOptions2);\n if (localOptions2.drawLabels && ((_a2 = localOptions2.bodyLabels) == null ? void 0 : _a2.length) > 0) {\n let l = localOptions2.bodyLabels.slice();\n l = replace(l, \"[score]\", 100 * result[i].score);\n labels(ctx, l, result[i].box[0], result[i].box[1], localOptions2);\n }\n }\n if (localOptions2.drawPoints && result[i].keypoints) {\n for (let pt = 0; pt < result[i].keypoints.length; pt++) {\n if (!result[i].keypoints[pt].score || result[i].keypoints[pt].score === 0)\n continue;\n ctx.fillStyle = colorDepth(result[i].keypoints[pt].position[2], localOptions2);\n point(ctx, result[i].keypoints[pt].position[0], result[i].keypoints[pt].position[1], 0, localOptions2);\n }\n }\n if (localOptions2.drawLabels && ((_b2 = localOptions2.bodyPartLabels) == null ? void 0 : _b2.length) > 0 && result[i].keypoints) {\n ctx.font = localOptions2.font;\n for (const pt of result[i].keypoints) {\n if (!pt.score || pt.score === 0)\n continue;\n let l = localOptions2.bodyPartLabels.slice();\n l = replace(l, \"[label]\", pt.part);\n l = replace(l, \"[score]\", 100 * pt.score);\n labels(ctx, l, pt.position[0], pt.position[1], localOptions2);\n }\n }\n if (localOptions2.drawPolygons && result[i].keypoints && result[i].annotations) {\n for (const part of Object.values(result[i].annotations)) {\n for (const connected4 of part)\n curves(ctx, connected4, localOptions2);\n }\n }\n }\n}\n\n// src/draw/hand.ts\nfunction hand(inCanvas2, result, drawOptions) {\n var _a2, _b2;\n const localOptions2 = mergeDeep(options2, drawOptions);\n if (!result || !inCanvas2)\n return;\n const ctx = getCanvasContext(inCanvas2);\n if (!ctx)\n return;\n ctx.lineJoin = \"round\";\n ctx.font = localOptions2.font;\n for (const h of result) {\n if (localOptions2.drawBoxes) {\n ctx.strokeStyle = localOptions2.color;\n ctx.fillStyle = localOptions2.color;\n rect(ctx, h.box[0], h.box[1], h.box[2], h.box[3], localOptions2);\n if (localOptions2.drawLabels && ((_a2 = localOptions2.handLabels) == null ? void 0 : _a2.length) > 0) {\n let l = localOptions2.handLabels.slice();\n l = replace(l, \"[label]\", h.label);\n l = replace(l, \"[score]\", 100 * h.score);\n labels(ctx, l, h.box[0], h.box[1], localOptions2);\n }\n ctx.stroke();\n }\n if (localOptions2.drawPoints) {\n if (h.keypoints && h.keypoints.length > 0) {\n for (const pt of h.keypoints) {\n ctx.fillStyle = colorDepth(pt[2], localOptions2);\n point(ctx, pt[0], pt[1], 0, localOptions2);\n }\n }\n }\n if (localOptions2.drawLabels && h.annotations && ((_b2 = localOptions2.fingerLabels) == null ? void 0 : _b2.length) > 0) {\n for (const [part, pt] of Object.entries(h.annotations)) {\n let l = localOptions2.fingerLabels.slice();\n l = replace(l, \"[label]\", part);\n labels(ctx, l, pt[pt.length - 1][0], pt[pt.length - 1][1], localOptions2);\n }\n }\n if (localOptions2.drawPolygons && h.annotations) {\n const addHandLine = (part) => {\n if (!part || part.length === 0 || !part[0])\n return;\n for (let i = 0; i < part.length; i++) {\n ctx.beginPath();\n const z = part[i][2] || 0;\n ctx.strokeStyle = colorDepth(i * z, localOptions2);\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 ctx.lineWidth = localOptions2.lineWidth;\n addHandLine(h.annotations.index);\n addHandLine(h.annotations.middle);\n addHandLine(h.annotations.ring);\n addHandLine(h.annotations.pinky);\n addHandLine(h.annotations.thumb);\n }\n }\n}\n\n// src/draw/object.ts\nfunction object(inCanvas2, result, drawOptions) {\n var _a2;\n const localOptions2 = mergeDeep(options2, drawOptions);\n if (!result || !inCanvas2)\n return;\n const ctx = getCanvasContext(inCanvas2);\n if (!ctx)\n return;\n ctx.lineJoin = \"round\";\n ctx.font = localOptions2.font;\n for (const h of result) {\n if (localOptions2.drawBoxes) {\n ctx.strokeStyle = localOptions2.color;\n ctx.fillStyle = localOptions2.color;\n rect(ctx, h.box[0], h.box[1], h.box[2], h.box[3], localOptions2);\n if (localOptions2.drawLabels && ((_a2 = localOptions2.objectLabels) == null ? void 0 : _a2.length) > 0) {\n let l = localOptions2.objectLabels.slice();\n l = replace(l, \"[label]\", h.label);\n l = replace(l, \"[score]\", 100 * h.score);\n labels(ctx, l, h.box[0], h.box[1], localOptions2);\n }\n ctx.stroke();\n }\n }\n}\n\n// src/draw/gesture.ts\nfunction gesture(inCanvas2, result, drawOptions) {\n var _a2;\n const localOptions2 = mergeDeep(options2, drawOptions);\n if (!result || !inCanvas2)\n return;\n if (localOptions2.drawGestures && ((_a2 = localOptions2.gestureLabels) == null ? void 0 : _a2.length) > 0) {\n const ctx = getCanvasContext(inCanvas2);\n if (!ctx)\n return;\n ctx.font = localOptions2.font;\n ctx.fillStyle = localOptions2.color;\n let i = 1;\n for (let j10 = 0; j10 < result.length; j10++) {\n const [where, what] = Object.entries(result[j10]);\n if (what.length > 1 && what[1].length > 0) {\n const who = where[1] > 0 ? `#${where[1]}` : \"\";\n let l = localOptions2.gestureLabels.slice();\n l = replace(l, \"[where]\", where[0]);\n l = replace(l, \"[who]\", who);\n l = replace(l, \"[what]\", what[1]);\n labels(ctx, l, 8, 2 + i * localOptions2.lineHeight, localOptions2);\n i += 1;\n }\n }\n }\n}\n\n// src/draw/labels.ts\nvar defaultLabels = {\n face: `face\n confidence: [score]%\n [gender] [genderScore]%\n age: [age] years\n distance: [distance]cm\n real: [real]%\n live: [live]%\n [emotions]\n roll: [roll]\\xB0 yaw:[yaw]\\xB0 pitch:[pitch]\\xB0\n gaze: [gaze]\\xB0`,\n body: \"body [score]%\",\n bodyPart: \"[label] [score]%\",\n object: \"[label] [score]%\",\n hand: \"[label] [score]%\",\n finger: \"[label]\",\n gesture: \"[where] [who]: [what]\"\n};\n\n// src/draw/draw.ts\nvar drawTime = 0;\nfunction person(inCanvas2, result, drawOptions) {\n const localOptions2 = mergeDeep(options2, drawOptions);\n if (!result || !inCanvas2)\n return;\n const ctx = getCanvasContext(inCanvas2);\n if (!ctx)\n return;\n ctx.lineJoin = \"round\";\n ctx.font = localOptions2.font;\n for (let i = 0; i < result.length; i++) {\n if (localOptions2.drawBoxes) {\n ctx.strokeStyle = localOptions2.color;\n ctx.fillStyle = localOptions2.color;\n rect(ctx, result[i].box[0], result[i].box[1], result[i].box[2], result[i].box[3], localOptions2);\n if (localOptions2.drawLabels) {\n const label = `person #${i}`;\n if (localOptions2.shadowColor && localOptions2.shadowColor !== \"\") {\n ctx.fillStyle = localOptions2.shadowColor;\n ctx.fillText(label, result[i].box[0] + 3, 1 + result[i].box[1] + localOptions2.lineHeight, result[i].box[2]);\n }\n ctx.fillStyle = localOptions2.labelColor;\n ctx.fillText(label, result[i].box[0] + 2, 0 + result[i].box[1] + localOptions2.lineHeight, result[i].box[2]);\n }\n ctx.stroke();\n }\n }\n}\nfunction canvas2(input, output) {\n if (!input || !output)\n return;\n const ctx = getCanvasContext(output);\n if (!ctx)\n return;\n ctx.drawImage(input, 0, 0);\n}\nasync function all(inCanvas2, result, drawOptions) {\n if (!(result == null ? void 0 : result.performance) || !inCanvas2)\n return null;\n const timeStamp = now();\n const localOptions2 = mergeDeep(options2, drawOptions);\n const promise = Promise.all([\n face(inCanvas2, result.face, localOptions2),\n body(inCanvas2, result.body, localOptions2),\n hand(inCanvas2, result.hand, localOptions2),\n object(inCanvas2, result.object, localOptions2),\n gesture(inCanvas2, result.gesture, localOptions2)\n // gestures do not have buffering\n // person(inCanvas, result.persons, localOptions); // already included above\n ]);\n drawTime = env.perfadd ? drawTime + Math.round(now() - timeStamp) : Math.round(now() - timeStamp);\n result.performance.draw = drawTime;\n return promise;\n}\nfunction init2() {\n options2.faceLabels = defaultLabels.face;\n options2.bodyLabels = defaultLabels.body;\n options2.bodyPartLabels = defaultLabels.bodyPart;\n options2.handLabels = defaultLabels.hand;\n options2.fingerLabels = defaultLabels.finger;\n options2.objectLabels = defaultLabels.object;\n options2.gestureLabels = defaultLabels.gesture;\n}\n\n// src/body/blazeposecoords.ts\nvar blazeposecoords_exports = {};\n__export(blazeposecoords_exports, {\n connected: () => connected,\n kpt: () => kpt\n});\nvar kpt = [\n \"nose\",\n // 0\n \"leftEyeInside\",\n // 1\n \"leftEye\",\n // 2\n \"leftEyeOutside\",\n // 3\n \"rightEyeInside\",\n // 4\n \"rightEye\",\n // 5\n \"rightEyeOutside\",\n // 6\n \"leftEar\",\n // 7\n \"rightEar\",\n // 8\n \"leftMouth\",\n // 9\n \"rightMouth\",\n // 10\n \"leftShoulder\",\n // 11\n \"rightShoulder\",\n // 12\n \"leftElbow\",\n // 13\n \"rightElbow\",\n // 14\n \"leftWrist\",\n // 15\n \"rightWrist\",\n // 16\n \"leftPinky\",\n // 17\n \"rightPinky\",\n // 18\n \"leftIndex\",\n // 19\n \"rightIndex\",\n // 20\n \"leftThumb\",\n // 21\n \"rightThumb\",\n // 22\n \"leftHip\",\n // 23\n \"rightHip\",\n // 24\n \"leftKnee\",\n // 25\n \"rightKnee\",\n // 26\n \"leftAnkle\",\n // 27\n \"rightAnkle\",\n // 28\n \"leftHeel\",\n // 29\n \"rightHeel\",\n // 30\n \"leftFoot\",\n // 31\n \"rightFoot\",\n // 32\n \"bodyCenter\",\n // 33\n \"bodyTop\",\n // 34\n \"leftPalm\",\n // 35 // z-coord not ok\n \"leftHand\",\n // 36 // similar to wrist but z-coord not ok\n \"rightPalm\",\n // 37 // z-coord not ok\n \"rightHand\"\n // 38 // similar to wrist but z-coord not ok\n];\nvar connected = {\n shoulders: [\"leftShoulder\", \"rightShoulder\"],\n hips: [\"rightHip\", \"leftHip\"],\n mouth: [\"leftMouth\", \"rightMouth\"],\n leftLegUpper: [\"leftHip\", \"leftKnee\"],\n leftLegLower: [\"leftKnee\", \"leftAnkle\"],\n leftFoot: [\"leftAnkle\", \"leftHeel\", \"leftFoot\"],\n leftTorso: [\"leftShoulder\", \"leftHip\"],\n leftArmUpper: [\"leftShoulder\", \"leftElbow\"],\n leftArmLower: [\"leftElbow\", \"leftWrist\"],\n leftHand: [\"leftWrist\", \"leftPalm\"],\n leftHandPinky: [\"leftPalm\", \"leftPinky\"],\n leftHandIndex: [\"leftPalm\", \"leftIndex\"],\n leftHandThumb: [\"leftPalm\", \"leftThumb\"],\n leftEyeOutline: [\"leftEyeInside\", \"leftEyeOutside\"],\n rightLegUpper: [\"rightHip\", \"rightKnee\"],\n rightLegLower: [\"rightKnee\", \"rightAnkle\"],\n rightFoot: [\"rightAnkle\", \"rightHeel\", \"rightFoot\"],\n rightTorso: [\"rightShoulder\", \"rightHip\"],\n rightArmUpper: [\"rightShoulder\", \"rightElbow\"],\n rightArmLower: [\"rightElbow\", \"rightWrist\"],\n rightHand: [\"rightWrist\", \"rightPalm\"],\n rightHandPinky: [\"rightPalm\", \"rightPinky\"],\n rightHandIndex: [\"rightPalm\", \"rightIndex\"],\n rightHandThumb: [\"rightPalm\", \"rightThumb\"],\n rightEyeOutline: [\"rightEyeInside\", \"rightEyeOutside\"]\n};\n\n// src/body/blazeposedetector.ts\nvar model;\nvar inputSize = 224;\nvar anchorTensor;\nvar numLayers = 5;\nvar strides = [8, 16, 32, 32, 32];\nfunction createAnchors() {\n const anchors3 = [];\n let layerId = 0;\n while (layerId < numLayers) {\n let anchorCount = 0;\n let lastSameStrideLayer = layerId;\n while (lastSameStrideLayer < strides.length && strides[lastSameStrideLayer] === strides[layerId]) {\n anchorCount += 2;\n lastSameStrideLayer++;\n }\n const stride = strides[layerId];\n const featureMapHeight = Math.ceil(inputSize / stride);\n const featureMapWidth = Math.ceil(inputSize / stride);\n for (let y6 = 0; y6 < featureMapHeight; ++y6) {\n for (let x = 0; x < featureMapWidth; ++x) {\n for (let anchorId = 0; anchorId < anchorCount; ++anchorId) {\n anchors3.push({ x: (x + 0.5) / featureMapWidth, y: (y6 + 0.5) / featureMapHeight });\n }\n }\n }\n layerId = lastSameStrideLayer;\n }\n anchorTensor = { x: dr(anchors3.map((a) => a.x)), y: dr(anchors3.map((a) => a.y)) };\n}\nasync function loadDetector(config3) {\n if (env.initial)\n model = null;\n if (!model && config3.body[\"detector\"] && config3.body[\"detector\"].modelPath || \"\") {\n model = await loadModel(config3.body[\"detector\"].modelPath);\n const inputs = (model == null ? void 0 : model[\"executor\"]) ? Object.values(model.modelSignature[\"inputs\"]) : void 0;\n inputSize = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;\n } else if (config3.debug && model)\n log(\"cached model:\", model[\"modelUrl\"]);\n createAnchors();\n return model;\n}\nvar cropFactor = [5, 5];\nfunction decodeBoxes(boxesTensor, anchor) {\n return Ee(() => {\n const split = Oa(boxesTensor, 12, 1);\n let xCenter = Up(split[0]);\n let yCenter = Up(split[1]);\n let width = Up(split[2]);\n let height = Up(split[3]);\n xCenter = be(He(xCenter, inputSize), anchor.x);\n yCenter = be(He(yCenter, inputSize), anchor.y);\n width = ne(He(width, inputSize), cropFactor[0]);\n height = ne(He(height, inputSize), cropFactor[1]);\n const xMin = ke(xCenter, He(width, 2));\n const yMin = ke(yCenter, He(height, 2));\n const xMax = be(xMin, width);\n const yMax = be(yMin, height);\n const boxes = Sr([xMin, yMin, xMax, yMax], 1);\n return boxes;\n });\n}\nasync function decodeResults(boxesTensor, logitsTensor, config3, outputSize2) {\n var _a2, _b2;\n const detectedBoxes = [];\n const t10 = {};\n t10.boxes = decodeBoxes(boxesTensor, anchorTensor);\n t10.scores = Ws(logitsTensor);\n t10.nms = await eK.nonMaxSuppressionAsync(t10.boxes, t10.scores, 1, ((_a2 = config3.body[\"detector\"]) == null ? void 0 : _a2.minConfidence) || 0.1, ((_b2 = config3.body[\"detector\"]) == null ? void 0 : _b2.iouThreshold) || 0.1);\n const nms = await t10.nms.data();\n const scores = await t10.scores.data();\n const boxes = await t10.boxes.array();\n for (const i of Array.from(nms)) {\n const score = scores[i];\n const boxRaw = boxes[i];\n const box = [Math.round(boxRaw[0] * outputSize2[0]), Math.round(boxRaw[1] * outputSize2[1]), Math.round(boxRaw[2] * outputSize2[0]), Math.round(boxRaw[3] * outputSize2[1])];\n const detectedBox = { score, boxRaw, box };\n detectedBoxes.push(detectedBox);\n }\n Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));\n return detectedBoxes;\n}\nasync function detectBoxes(input, config3, outputSize2) {\n const t10 = {};\n t10.res = model == null ? void 0 : model.execute(input, [\"Identity\"]);\n t10.logitsRaw = Ke(t10.res, [0, 0, 0], [1, -1, 1]);\n t10.boxesRaw = Ke(t10.res, [0, 0, 1], [1, -1, -1]);\n t10.logits = Up(t10.logitsRaw);\n t10.boxes = Up(t10.boxesRaw);\n const boxes = await decodeResults(t10.boxes, t10.logits, config3, outputSize2);\n Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));\n return boxes;\n}\n\n// src/util/box.ts\nfunction calc(keypoints, outputSize2 = [1, 1]) {\n const coords = [keypoints.map((pt) => pt[0]), keypoints.map((pt) => pt[1])];\n const min = [Math.min(...coords[0]), Math.min(...coords[1])];\n const max = [Math.max(...coords[0]), Math.max(...coords[1])];\n const box = [min[0], min[1], max[0] - min[0], max[1] - min[1]];\n const boxRaw = [box[0] / outputSize2[0], box[1] / outputSize2[1], box[2] / outputSize2[0], box[3] / outputSize2[1]];\n return { box, boxRaw };\n}\nfunction square(keypoints, outputSize2 = [1, 1]) {\n const coords = [keypoints.map((pt) => pt[0]), keypoints.map((pt) => pt[1])];\n const min = [Math.min(...coords[0]), Math.min(...coords[1])];\n const max = [Math.max(...coords[0]), Math.max(...coords[1])];\n const center = [(min[0] + max[0]) / 2, (min[1] + max[1]) / 2];\n const dist = Math.max(center[0] - min[0], center[1] - min[1], -center[0] + max[0], -center[1] + max[1]);\n const box = [Math.trunc(center[0] - dist), Math.trunc(center[1] - dist), Math.trunc(2 * dist), Math.trunc(2 * dist)];\n const boxRaw = [box[0] / outputSize2[0], box[1] / outputSize2[1], box[2] / outputSize2[0], box[3] / outputSize2[1]];\n return { box, boxRaw };\n}\nfunction scale(box, scaleFact) {\n const dist = [box[2] * scaleFact, box[3] * scaleFact];\n const newBox = [\n box[0] - (dist[0] - box[2]) / 2,\n box[1] - (dist[1] - box[3]) / 2,\n dist[0],\n dist[1]\n ];\n return newBox;\n}\n\n// src/body/blazepose.ts\nvar model2;\nvar inputSize2 = 256;\nvar skipped = Number.MAX_SAFE_INTEGER;\nvar outputNodes = {\n landmarks: [\"ld_3d\", \"activation_segmentation\", \"activation_heatmap\", \"world_3d\", \"output_poseflag\"],\n detector: []\n};\nvar cache = [];\nvar padding = [[0, 0], [0, 0], [0, 0], [0, 0]];\nvar lastTime = 0;\nvar sigmoid = (x) => 1 - 1 / (1 + Math.exp(x));\nvar loadDetect = (config3) => loadDetector(config3);\nasync function loadPose(config3) {\n if (env.initial)\n model2 = null;\n if (!model2) {\n model2 = await loadModel(config3.body.modelPath);\n const inputs = (model2 == null ? void 0 : model2[\"executor\"]) ? Object.values(model2.modelSignature[\"inputs\"]) : void 0;\n inputSize2 = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;\n } else if (config3.debug)\n log(\"cached model:\", model2[\"modelUrl\"]);\n return model2;\n}\nfunction prepareImage(input, size2, cropBox) {\n var _a2, _b2;\n const t10 = {};\n if (!((_a2 = input == null ? void 0 : input.shape) == null ? void 0 : _a2[1]) || !((_b2 = input == null ? void 0 : input.shape) == null ? void 0 : _b2[2]))\n return input;\n let final;\n if (cropBox) {\n t10.cropped = eK.cropAndResize(input, [cropBox], [0], [input.shape[1], input.shape[2]]);\n }\n if (input.shape[1] !== input.shape[2]) {\n const height = [\n input.shape[2] > input.shape[1] ? Math.trunc((input.shape[2] - input.shape[1]) / 2) : 0,\n input.shape[2] > input.shape[1] ? Math.trunc((input.shape[2] - input.shape[1]) / 2) : 0\n ];\n const width = [\n input.shape[1] > input.shape[2] ? Math.trunc((input.shape[1] - input.shape[2]) / 2) : 0,\n input.shape[1] > input.shape[2] ? Math.trunc((input.shape[1] - input.shape[2]) / 2) : 0\n ];\n padding = [\n [0, 0],\n // dont touch batch\n height,\n // height before&after\n width,\n // width before&after\n [0, 0]\n // dont touch rbg\n ];\n t10.pad = Ks(t10.cropped || input, padding);\n t10.resize = eK.resizeBilinear(t10.pad, [size2, size2]);\n final = He(t10.resize, constants.tf255);\n } else if (input.shape[1] !== size2) {\n t10.resize = eK.resizeBilinear(t10.cropped || input, [size2, size2]);\n final = He(t10.resize, constants.tf255);\n } else {\n final = He(t10.cropped || input, constants.tf255);\n }\n Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));\n return final;\n}\nfunction rescaleKeypoints(keypoints, outputSize2, cropBox) {\n for (const kpt4 of keypoints) {\n kpt4.position = [\n Math.trunc(kpt4.position[0] * (outputSize2[0] + padding[2][0] + padding[2][1]) / outputSize2[0] - padding[2][0]),\n Math.trunc(kpt4.position[1] * (outputSize2[1] + padding[1][0] + padding[1][1]) / outputSize2[1] - padding[1][0]),\n kpt4.position[2]\n ];\n kpt4.positionRaw = [kpt4.position[0] / outputSize2[0], kpt4.position[1] / outputSize2[1], 2 * kpt4.position[2] / (outputSize2[0] + outputSize2[1])];\n }\n if (cropBox) {\n const width = cropBox[2] - cropBox[0];\n const height = cropBox[3] - cropBox[1];\n for (const kpt4 of keypoints) {\n kpt4.positionRaw = [\n kpt4.positionRaw[0] / height + cropBox[1],\n // correct offset due to crop\n kpt4.positionRaw[1] / width + cropBox[0],\n // correct offset due to crop\n kpt4.positionRaw[2]\n ];\n kpt4.position = [\n Math.trunc(kpt4.positionRaw[0] * outputSize2[0]),\n Math.trunc(kpt4.positionRaw[1] * outputSize2[1]),\n kpt4.positionRaw[2]\n ];\n }\n }\n return keypoints;\n}\nfunction fixKeypoints(keypoints) {\n const leftPalm = keypoints.find((k) => k.part === \"leftPalm\");\n const leftWrist = keypoints.find((k) => k.part === \"leftWrist\");\n const leftIndex = keypoints.find((k) => k.part === \"leftIndex\");\n leftPalm.position[2] = ((leftWrist.position[2] || 0) + (leftIndex.position[2] || 0)) / 2;\n const rightPalm = keypoints.find((k) => k.part === \"rightPalm\");\n const rightWrist = keypoints.find((k) => k.part === \"rightWrist\");\n const rightIndex = keypoints.find((k) => k.part === \"rightIndex\");\n rightPalm.position[2] = ((rightWrist.position[2] || 0) + (rightIndex.position[2] || 0)) / 2;\n}\nasync function detectLandmarks(input, config3, outputSize2) {\n if (!(model2 == null ? void 0 : model2[\"executor\"]))\n return null;\n const t10 = {};\n [\n t10.ld,\n t10.segmentation,\n t10.heatmap,\n t10.world,\n t10.poseflag\n /* 1,1 */\n ] = model2 == null ? void 0 : model2.execute(input, outputNodes.landmarks);\n const poseScore = (await t10.poseflag.data())[0];\n const points = await t10.ld.data();\n const distances = await t10.world.data();\n Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));\n const keypointsRelative = [];\n const depth = 5;\n for (let i = 0; i < points.length / depth; i++) {\n const score = sigmoid(points[depth * i + 3]);\n const presence = sigmoid(points[depth * i + 4]);\n const adjScore = Math.trunc(100 * score * presence * poseScore) / 100;\n const positionRaw = [points[depth * i + 0] / inputSize2, points[depth * i + 1] / inputSize2, points[depth * i + 2] + 0];\n const position = [Math.trunc(outputSize2[0] * positionRaw[0]), Math.trunc(outputSize2[1] * positionRaw[1]), positionRaw[2]];\n const distance2 = [distances[depth * i + 0], distances[depth * i + 1], distances[depth * i + 2] + 0];\n keypointsRelative.push({ part: kpt[i], positionRaw, position, distance: distance2, score: adjScore });\n }\n if (poseScore < (config3.body.minConfidence || 0))\n return null;\n fixKeypoints(keypointsRelative);\n const keypoints = rescaleKeypoints(keypointsRelative, outputSize2);\n const kpts = keypoints.map((k) => k.position);\n const boxes = calc(kpts, [outputSize2[0], outputSize2[1]]);\n const annotations2 = {};\n for (const [name, indexes] of Object.entries(connected)) {\n const pt = [];\n for (let i = 0; i < indexes.length - 1; i++) {\n const pt0 = keypoints.find((kpt4) => kpt4.part === indexes[i]);\n const pt1 = keypoints.find((kpt4) => kpt4.part === indexes[i + 1]);\n if (pt0 && pt1)\n pt.push([pt0.position, pt1.position]);\n }\n annotations2[name] = pt;\n }\n const body4 = { id: 0, score: Math.trunc(100 * poseScore) / 100, box: boxes.box, boxRaw: boxes.boxRaw, keypoints, annotations: annotations2 };\n return body4;\n}\nasync function predict(input, config3) {\n var _a2, _b2, _c2;\n const outputSize2 = [input.shape[2] || 0, input.shape[1] || 0];\n const skipTime = (config3.body.skipTime || 0) > now() - lastTime;\n const skipFrame = skipped < (config3.body.skipFrames || 0);\n if (config3.skipAllowed && skipTime && skipFrame && cache !== null) {\n skipped++;\n } else {\n let boxes = [];\n if ((_b2 = (_a2 = config3.body) == null ? void 0 : _a2[\"detector\"]) == null ? void 0 : _b2[\"enabled\"]) {\n const preparedImage = prepareImage(input, 224);\n boxes = await detectBoxes(preparedImage, config3, outputSize2);\n Ot(preparedImage);\n } else {\n boxes = [{ box: [0, 0, 0, 0], boxRaw: [0, 0, 1, 1], score: 0 }];\n }\n for (let i = 0; i < boxes.length; i++) {\n const preparedBox = prepareImage(input, 256, (_c2 = boxes[i]) == null ? void 0 : _c2.boxRaw);\n cache.length = 0;\n const bodyResult = await detectLandmarks(preparedBox, config3, outputSize2);\n Ot(preparedBox);\n if (!bodyResult)\n continue;\n bodyResult.id = i;\n cache.push(bodyResult);\n }\n lastTime = now();\n skipped = 0;\n }\n return cache;\n}\n\n// src/object/labels.ts\nvar labels2 = [\n { class: 1, label: \"person\" },\n { class: 2, label: \"bicycle\" },\n { class: 3, label: \"car\" },\n { class: 4, label: \"motorcycle\" },\n { class: 5, label: \"airplane\" },\n { class: 6, label: \"bus\" },\n { class: 7, label: \"train\" },\n { class: 8, label: \"truck\" },\n { class: 9, label: \"boat\" },\n { class: 10, label: \"traffic light\" },\n { class: 11, label: \"fire hydrant\" },\n { class: 12, label: \"stop sign\" },\n { class: 13, label: \"parking meter\" },\n { class: 14, label: \"bench\" },\n { class: 15, label: \"bird\" },\n { class: 16, label: \"cat\" },\n { class: 17, label: \"dog\" },\n { class: 18, label: \"horse\" },\n { class: 19, label: \"sheep\" },\n { class: 20, label: \"cow\" },\n { class: 21, label: \"elephant\" },\n { class: 22, label: \"bear\" },\n { class: 23, label: \"zebra\" },\n { class: 24, label: \"giraffe\" },\n { class: 25, label: \"backpack\" },\n { class: 26, label: \"umbrella\" },\n { class: 27, label: \"handbag\" },\n { class: 28, label: \"tie\" },\n { class: 29, label: \"suitcase\" },\n { class: 30, label: \"frisbee\" },\n { class: 31, label: \"skis\" },\n { class: 32, label: \"snowboard\" },\n { class: 33, label: \"sports ball\" },\n { class: 34, label: \"kite\" },\n { class: 35, label: \"baseball bat\" },\n { class: 36, label: \"baseball glove\" },\n { class: 37, label: \"skateboard\" },\n { class: 38, label: \"surfboard\" },\n { class: 39, label: \"tennis racket\" },\n { class: 40, label: \"bottle\" },\n { class: 41, label: \"wine glass\" },\n { class: 42, label: \"cup\" },\n { class: 43, label: \"fork\" },\n { class: 44, label: \"knife\" },\n { class: 45, label: \"spoon\" },\n { class: 46, label: \"bowl\" },\n { class: 47, label: \"banana\" },\n { class: 48, label: \"apple\" },\n { class: 49, label: \"sandwich\" },\n { class: 50, label: \"orange\" },\n { class: 51, label: \"broccoli\" },\n { class: 52, label: \"carrot\" },\n { class: 53, label: \"hot dog\" },\n { class: 54, label: \"pizza\" },\n { class: 55, label: \"donut\" },\n { class: 56, label: \"cake\" },\n { class: 57, label: \"chair\" },\n { class: 58, label: \"couch\" },\n { class: 59, label: \"potted plant\" },\n { class: 60, label: \"bed\" },\n { class: 61, label: \"dining table\" },\n { class: 62, label: \"toilet\" },\n { class: 63, label: \"tv\" },\n { class: 64, label: \"laptop\" },\n { class: 65, label: \"mouse\" },\n { class: 66, label: \"remote\" },\n { class: 67, label: \"keyboard\" },\n { class: 68, label: \"cell phone\" },\n { class: 69, label: \"microwave\" },\n { class: 70, label: \"oven\" },\n { class: 71, label: \"toaster\" },\n { class: 72, label: \"sink\" },\n { class: 73, label: \"refrigerator\" },\n { class: 74, label: \"book\" },\n { class: 75, label: \"clock\" },\n { class: 76, label: \"vase\" },\n { class: 77, label: \"scissors\" },\n { class: 78, label: \"teddy bear\" },\n { class: 79, label: \"hair drier\" },\n { class: 80, label: \"toothbrush\" }\n];\n\n// src/object/centernet.ts\nvar model3;\nvar inputSize3 = 0;\nvar last2 = [];\nvar lastTime2 = 0;\nvar skipped2 = Number.MAX_SAFE_INTEGER;\nasync function load(config3) {\n if (env.initial)\n model3 = null;\n if (!model3) {\n model3 = await loadModel(config3.object.modelPath);\n const inputs = (model3 == null ? void 0 : model3[\"executor\"]) ? Object.values(model3.modelSignature[\"inputs\"]) : void 0;\n inputSize3 = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;\n } else if (config3.debug)\n log(\"cached model:\", model3[\"modelUrl\"]);\n return model3;\n}\nasync function process3(res, outputShape, config3) {\n if (!res)\n return [];\n const t10 = {};\n const results = [];\n const detections = await res.array();\n t10.squeeze = Up(res);\n const arr = Oa(t10.squeeze, 6, 1);\n t10.stack = Sr([arr[1], arr[0], arr[3], arr[2]], 1);\n t10.boxes = Up(t10.stack);\n t10.scores = Up(arr[4]);\n t10.classes = Up(arr[5]);\n Ot([res, ...arr]);\n t10.nms = await eK.nonMaxSuppressionAsync(t10.boxes, t10.scores, config3.object.maxDetected || 0, config3.object.iouThreshold, config3.object.minConfidence || 0);\n const nms = await t10.nms.data();\n let i = 0;\n for (const id2 of Array.from(nms)) {\n const score = Math.trunc(100 * detections[0][id2][4]) / 100;\n const classVal = detections[0][id2][5];\n if (Number.isNaN(classVal))\n continue;\n const label = labels2[classVal].label;\n const [x, y6] = [\n detections[0][id2][0] / inputSize3,\n detections[0][id2][1] / inputSize3\n ];\n const boxRaw = [\n x,\n y6,\n detections[0][id2][2] / inputSize3 - x,\n detections[0][id2][3] / inputSize3 - y6\n ];\n const box = [\n Math.trunc(boxRaw[0] * outputShape[0]),\n Math.trunc(boxRaw[1] * outputShape[1]),\n Math.trunc(boxRaw[2] * outputShape[0]),\n Math.trunc(boxRaw[3] * outputShape[1])\n ];\n results.push({ id: i++, score, class: classVal, label, box, boxRaw });\n }\n Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));\n return results;\n}\nasync function predict2(input, config3) {\n if (!(model3 == null ? void 0 : model3[\"executor\"]))\n return [];\n const skipTime = (config3.object.skipTime || 0) > now() - lastTime2;\n const skipFrame = skipped2 < (config3.object.skipFrames || 0);\n if (config3.skipAllowed && skipTime && skipFrame && last2.length > 0) {\n skipped2++;\n return last2;\n }\n skipped2 = 0;\n return new Promise(async (resolve) => {\n const outputSize2 = [input.shape[2] || 0, input.shape[1] || 0];\n const resize = eK.resizeBilinear(input, [inputSize3, inputSize3]);\n const objectT = config3.object.enabled ? model3 == null ? void 0 : model3.execute(resize, [\"tower_0/detections\"]) : null;\n lastTime2 = now();\n Ot(resize);\n const obj = await process3(objectT, outputSize2, config3);\n last2 = obj;\n resolve(obj);\n });\n}\n\n// src/body/efficientposecoords.ts\nvar efficientposecoords_exports = {};\n__export(efficientposecoords_exports, {\n connected: () => connected2,\n kpt: () => kpt2\n});\nvar kpt2 = [\n \"head\",\n \"neck\",\n \"rightShoulder\",\n \"rightElbow\",\n \"rightWrist\",\n \"chest\",\n \"leftShoulder\",\n \"leftElbow\",\n \"leftWrist\",\n \"bodyCenter\",\n \"rightHip\",\n \"rightKnee\",\n \"rightAnkle\",\n \"leftHip\",\n \"leftKnee\",\n \"leftAnkle\"\n];\nvar connected2 = {\n leftLeg: [\"leftHip\", \"leftKnee\", \"leftAnkle\"],\n rightLeg: [\"rightHip\", \"rightKnee\", \"rightAnkle\"],\n torso: [\"leftShoulder\", \"rightShoulder\", \"rightHip\", \"leftHip\", \"leftShoulder\"],\n leftArm: [\"leftShoulder\", \"leftElbow\", \"leftWrist\"],\n rightArm: [\"rightShoulder\", \"rightElbow\", \"rightWrist\"],\n head: []\n};\n\n// src/body/efficientpose.ts\nvar model4;\nvar lastTime3 = 0;\nvar cache2 = { id: 0, keypoints: [], box: [0, 0, 0, 0], boxRaw: [0, 0, 0, 0], score: 0, annotations: {} };\nvar skipped3 = Number.MAX_SAFE_INTEGER;\nasync function load2(config3) {\n if (env.initial)\n model4 = null;\n if (!model4)\n model4 = await loadModel(config3.body.modelPath);\n else if (config3.debug)\n log(\"cached model:\", model4[\"modelUrl\"]);\n return model4;\n}\nasync function max2d(inputs, minScore) {\n const [width, height] = inputs.shape;\n const reshaped = W(inputs, [height * width]);\n const max = Gs(reshaped, 0);\n const newScore = (await max.data())[0];\n if (newScore > minScore) {\n const coordinates = X0(reshaped, 0);\n const mod = Jv(coordinates, width);\n const x = (await mod.data())[0];\n const div = He(coordinates, width);\n const y6 = (await div.data())[0];\n Ot([reshaped, max, coordinates, mod, div]);\n return [x, y6, newScore];\n }\n Ot([reshaped, max]);\n return [0, 0, newScore];\n}\nasync function predict3(image, config3) {\n if (!(model4 == null ? void 0 : model4[\"executor\"]) || !(model4 == null ? void 0 : model4.inputs[0].shape))\n return [];\n const skipTime = (config3.body.skipTime || 0) > now() - lastTime3;\n const skipFrame = skipped3 < (config3.body.skipFrames || 0);\n if (config3.skipAllowed && skipTime && skipFrame && Object.keys(cache2.keypoints).length > 0) {\n skipped3++;\n return [cache2];\n }\n skipped3 = 0;\n return new Promise(async (resolve) => {\n const tensor = Ee(() => {\n var _a2, _b2;\n const resize = eK.resizeBilinear(image, [((_a2 = model4 == null ? void 0 : model4.inputs[0].shape) == null ? void 0 : _a2[2]) || 0, ((_b2 = model4 == null ? void 0 : model4.inputs[0].shape) == null ? void 0 : _b2[1]) || 0], false);\n const enhance2 = ne(resize, constants.tf2);\n const norm = ke(enhance2, constants.tf1);\n return norm;\n });\n let resT;\n if (config3.body.enabled)\n resT = model4 == null ? void 0 : model4.execute(tensor);\n lastTime3 = now();\n Ot(tensor);\n if (resT) {\n cache2.keypoints.length = 0;\n const squeeze = Up(resT);\n Ot(resT);\n const stack = so(squeeze, 2);\n Ot(squeeze);\n for (let id2 = 0; id2 < stack.length; id2++) {\n const [x6, y10, partScore] = await max2d(stack[id2], config3.body.minConfidence);\n if (partScore > (config3.body.minConfidence || 0)) {\n cache2.keypoints.push({\n score: Math.round(100 * partScore) / 100,\n part: kpt2[id2],\n positionRaw: [\n // normalized to 0..1\n // @ts-ignore model is not undefined here\n x6 / model4.inputs[0].shape[2],\n y10 / model4.inputs[0].shape[1]\n ],\n position: [\n // normalized to input image size\n // @ts-ignore model is not undefined here\n Math.round(image.shape[2] * x6 / model4.inputs[0].shape[2]),\n Math.round(image.shape[1] * y10 / model4.inputs[0].shape[1])\n ]\n });\n }\n }\n stack.forEach((s) => Ot(s));\n }\n cache2.score = cache2.keypoints.reduce((prev, curr) => curr.score > prev ? curr.score : prev, 0);\n const x = cache2.keypoints.map((a) => a.position[0]);\n const y6 = cache2.keypoints.map((a) => a.position[1]);\n cache2.box = [\n Math.min(...x),\n Math.min(...y6),\n Math.max(...x) - Math.min(...x),\n Math.max(...y6) - Math.min(...y6)\n ];\n const xRaw = cache2.keypoints.map((a) => a.positionRaw[0]);\n const yRaw = cache2.keypoints.map((a) => a.positionRaw[1]);\n cache2.boxRaw = [\n Math.min(...xRaw),\n Math.min(...yRaw),\n Math.max(...xRaw) - Math.min(...xRaw),\n Math.max(...yRaw) - Math.min(...yRaw)\n ];\n for (const [name, indexes] of Object.entries(connected2)) {\n const pt = [];\n for (let i = 0; i < indexes.length - 1; i++) {\n const pt0 = cache2.keypoints.find((kpt4) => kpt4.part === indexes[i]);\n const pt1 = cache2.keypoints.find((kpt4) => kpt4.part === indexes[i + 1]);\n if (pt0 && pt1 && pt0.score > (config3.body.minConfidence || 0) && pt1.score > (config3.body.minConfidence || 0))\n pt.push([pt0.position, pt1.position]);\n }\n cache2.annotations[name] = pt;\n }\n resolve([cache2]);\n });\n}\n\n// src/face/facemeshutil.ts\nvar getBoxSize = (box) => [Math.abs(box.endPoint[0] - box.startPoint[0]), Math.abs(box.endPoint[1] - box.startPoint[1])];\nvar getBoxCenter = (box) => [box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2, box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2, 1];\nvar clampBox = (box, input) => box ? [\n Math.trunc(Math.max(0, box.startPoint[0])),\n Math.trunc(Math.max(0, box.startPoint[1])),\n Math.trunc(Math.min(input.shape[2] || 0, box.endPoint[0]) - Math.max(0, box.startPoint[0])),\n Math.trunc(Math.min(input.shape[1] || 0, box.endPoint[1]) - Math.max(0, box.startPoint[1]))\n] : [0, 0, 0, 0];\nvar getRawBox = (box, input) => box ? [\n box.startPoint[0] / (input.shape[2] || 0),\n box.startPoint[1] / (input.shape[1] || 0),\n (box.endPoint[0] - box.startPoint[0]) / (input.shape[2] || 0),\n (box.endPoint[1] - box.startPoint[1]) / (input.shape[1] || 0)\n] : [0, 0, 0, 0];\nvar scaleBoxCoordinates = (box, factor, anchor) => {\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 landmarks = box.landmarks.map((pt) => [(pt[0] + anchor[0]) * factor[0], (pt[1] + anchor[1]) * factor[1]]);\n return { startPoint, endPoint, landmarks, confidence: box.confidence };\n};\nvar cutAndResize = (box, image, cropSize) => {\n const h = image.shape[1];\n const w = image.shape[2];\n const cutBox = [box.startPoint[1] / h, box.startPoint[0] / w, box.endPoint[1] / h, box.endPoint[0] / w];\n const crop = eK.cropAndResize(image, [cutBox], [0], cropSize);\n const norm = He(crop, constants.tf255);\n Ot(crop);\n return norm;\n};\nvar enlargeBox = (box, factor) => {\n const center = getBoxCenter(box);\n const size2 = getBoxSize(box);\n const halfSize = [factor * size2[0] / 2, factor * size2[1] / 2];\n return {\n startPoint: [center[0] - halfSize[0], center[1] - halfSize[1]],\n endPoint: [center[0] + halfSize[0], center[1] + halfSize[1]],\n landmarks: box.landmarks,\n confidence: box.confidence,\n size: size2\n };\n};\nvar squarifyBox = (box) => {\n const centers = getBoxCenter(box);\n const size2 = getBoxSize(box);\n const halfSize = Math.max(...size2) / 2;\n return {\n startPoint: [Math.round(centers[0] - halfSize), Math.round(centers[1] - halfSize)],\n endPoint: [Math.round(centers[0] + halfSize), Math.round(centers[1] + halfSize)],\n landmarks: box.landmarks,\n confidence: box.confidence,\n size: [Math.round(size2[0]), Math.round(size2[1])]\n };\n};\nvar calculateLandmarksBoundingBox = (landmarks) => {\n const x = landmarks.map((d) => d[0]);\n const y6 = landmarks.map((d) => d[1]);\n return {\n startPoint: [Math.min(...x), Math.min(...y6)],\n endPoint: [Math.max(...x), Math.max(...y6)],\n landmarks\n };\n};\nvar fixedRotationMatrix = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\nvar normalizeRadians = (angle) => angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\nvar computeRotation = (point1, point2) => normalizeRadians(Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]));\nvar buildTranslationMatrix = (x, y6) => [[1, 0, x], [0, 1, y6], [0, 0, 1]];\nvar dot = (v12, v22) => {\n let product = 0;\n for (let i = 0; i < v12.length; i++)\n product += v12[i] * v22[i];\n return product;\n};\nvar getColumnFrom2DArr = (arr, columnIndex) => {\n const column = [];\n for (let i = 0; i < arr.length; i++)\n column.push(arr[i][columnIndex]);\n return column;\n};\nvar multiplyTransformMatrices = (mat1, mat2) => {\n const product = [];\n const size2 = mat1.length;\n for (let row = 0; row < size2; row++) {\n product.push([]);\n for (let col = 0; col < size2; col++)\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n return product;\n};\nvar 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};\nvar 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 = [-dot(rotationComponent[0], translationComponent), -dot(rotationComponent[1], translationComponent)];\n return [rotationComponent[0].concat(invertedTranslation[0]), rotationComponent[1].concat(invertedTranslation[1]), [0, 0, 1]];\n};\nvar rotatePoint = (homogeneousCoordinate, rotationMatrix) => [dot(homogeneousCoordinate, rotationMatrix[0]), dot(homogeneousCoordinate, rotationMatrix[1])];\nfunction generateAnchors(inputSize10) {\n const spec = inputSize10 === 192 ? { strides: [4], anchors: [1] } : { strides: [inputSize10 / 16, inputSize10 / 8], anchors: [2, 6] };\n const anchors3 = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize10 + stride - 1) / stride);\n const gridCols = Math.floor((inputSize10 + 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 anchors3.push([anchorX, anchorY]);\n }\n }\n }\n return anchors3;\n}\nfunction transformRawCoords(coordsRaw, box, angle, rotationMatrix, inputSize10) {\n const boxSize = getBoxSize(box);\n const coordsScaled = coordsRaw.map((coord) => [\n // scaled around zero-point\n boxSize[0] / inputSize10 * (coord[0] - inputSize10 / 2),\n boxSize[1] / inputSize10 * (coord[1] - inputSize10 / 2),\n coord[2] || 0\n ]);\n const largeAngle = angle && angle !== 0 && Math.abs(angle) > 0.2;\n const coordsRotationMatrix = largeAngle ? buildRotationMatrix(angle, [0, 0]) : fixedRotationMatrix;\n const coordsRotated = largeAngle ? coordsScaled.map((coord) => [...rotatePoint(coord, coordsRotationMatrix), coord[2]]) : coordsScaled;\n const inverseRotationMatrix = largeAngle ? invertTransformMatrix(rotationMatrix) : fixedRotationMatrix;\n const boxCenter = getBoxCenter(box);\n const offsets = [dot(boxCenter, inverseRotationMatrix[0]), dot(boxCenter, inverseRotationMatrix[1])];\n return coordsRotated.map((coord) => [\n Math.trunc(coord[0] + offsets[0]),\n Math.trunc(coord[1] + offsets[1]),\n Math.trunc(coord[2] || 0)\n ]);\n}\nfunction correctFaceRotation(rotate, box, input, inputSize10) {\n const symmetryLine = box.landmarks.length >= meshLandmarks.count ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n let angle = 0;\n let rotationMatrix = fixedRotationMatrix;\n let face4;\n if (rotate && env.kernels.includes(\"rotatewithoffset\")) {\n angle = computeRotation(box.landmarks[symmetryLine[0]], box.landmarks[symmetryLine[1]]);\n const largeAngle = angle && angle !== 0 && Math.abs(angle) > 0.2;\n if (largeAngle) {\n const center = getBoxCenter(box);\n const centerRaw = [center[0] / input.shape[2], center[1] / input.shape[1]];\n const rotated = eK.rotateWithOffset(input, angle, 0, [centerRaw[0], centerRaw[1]]);\n rotationMatrix = buildRotationMatrix(-angle, center);\n face4 = cutAndResize(box, rotated, [inputSize10, inputSize10]);\n Ot(rotated);\n } else {\n face4 = cutAndResize(box, input, [inputSize10, inputSize10]);\n }\n } else {\n face4 = cutAndResize(box, input, [inputSize10, inputSize10]);\n }\n return [angle, rotationMatrix, face4];\n}\nvar findFaceCenter = (mesh) => {\n const x = mesh.map((m) => m[0]);\n const y6 = mesh.map((m) => m[1]);\n return [Math.min(...x) + (Math.max(...x) - Math.min(...x)) / 2, Math.min(...y6) + (Math.max(...y6) - Math.min(...y6)) / 2];\n};\nvar calculateFaceBox = (mesh, previousBox) => {\n const center = findFaceCenter(mesh);\n const boxSize = getBoxSize(previousBox);\n const calculatedBox = {\n startPoint: [center[0] - boxSize[0] / 2, center[1] - boxSize[1] / 2],\n endPoint: [center[0] + boxSize[0] / 2, center[1] + boxSize[1] / 2]\n };\n return calculatedBox;\n};\n\n// src/face/blazeface.ts\nvar keypointsCount = 6;\nvar faceBoxScaleFactor = 1.4;\nvar model5;\nvar anchors = null;\nvar inputSize4 = 0;\nvar inputSizeT = null;\nvar size = () => inputSize4;\nasync function load3(config3) {\n var _a2;\n if (env.initial)\n model5 = null;\n if (!model5)\n model5 = await loadModel((_a2 = config3.face.detector) == null ? void 0 : _a2.modelPath);\n else if (config3.debug)\n log(\"cached model:\", model5[\"modelUrl\"]);\n inputSize4 = model5[\"executor\"] && model5.inputs[0].shape ? model5.inputs[0].shape[2] : 256;\n inputSizeT = Ce(inputSize4, \"int32\");\n anchors = Oi(generateAnchors(inputSize4));\n return model5;\n}\nfunction decodeBoxes2(boxOutputs) {\n if (!anchors || !inputSizeT)\n return Br([0, 0]);\n const t10 = {};\n t10.boxStarts = Ke(boxOutputs, [0, 1], [-1, 2]);\n t10.centers = be(t10.boxStarts, anchors);\n t10.boxSizes = Ke(boxOutputs, [0, 3], [-1, 2]);\n t10.boxSizesNormalized = He(t10.boxSizes, inputSizeT);\n t10.centersNormalized = He(t10.centers, inputSizeT);\n t10.halfBoxSize = He(t10.boxSizesNormalized, constants.tf2);\n t10.starts = ke(t10.centersNormalized, t10.halfBoxSize);\n t10.ends = be(t10.centersNormalized, t10.halfBoxSize);\n t10.startNormalized = ne(t10.starts, inputSizeT);\n t10.endNormalized = ne(t10.ends, inputSizeT);\n const boxes = fv([t10.startNormalized, t10.endNormalized], 1);\n Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));\n return boxes;\n}\nasync function getBoxes(inputImage, config3) {\n var _a2, _b2, _c2, _d2, _e, _f2;\n if (!inputImage || inputImage[\"isDisposedInternal\"] || inputImage.shape.length !== 4 || inputImage.shape[1] < 1 || inputImage.shape[2] < 1)\n return [];\n const t10 = {};\n t10.resized = eK.resizeBilinear(inputImage, [inputSize4, inputSize4]);\n t10.div = He(t10.resized, constants.tf127);\n t10.normalized = ke(t10.div, constants.tf05);\n const res = model5 == null ? void 0 : model5.execute(t10.normalized);\n if (Array.isArray(res) && res.length > 2) {\n const sorted = res.sort((a, b) => a.size - b.size);\n t10.concat384 = xt([sorted[0], sorted[2]], 2);\n t10.concat512 = xt([sorted[1], sorted[3]], 2);\n t10.concat = xt([t10.concat512, t10.concat384], 1);\n t10.batch = Up(t10.concat, [0]);\n } else if (Array.isArray(res)) {\n t10.batch = Up(res[0]);\n } else {\n t10.batch = Up(res);\n }\n Ot(res);\n t10.boxes = decodeBoxes2(t10.batch);\n t10.logits = Ke(t10.batch, [0, 0], [-1, 1]);\n t10.sigmoid = Ws(t10.logits);\n t10.scores = Up(t10.sigmoid);\n t10.nms = await eK.nonMaxSuppressionAsync(t10.boxes, t10.scores, ((_a2 = config3.face.detector) == null ? void 0 : _a2.maxDetected) || 0, ((_b2 = config3.face.detector) == null ? void 0 : _b2.iouThreshold) || 0, ((_c2 = config3.face.detector) == null ? void 0 : _c2.minConfidence) || 0);\n const nms = await t10.nms.array();\n const boxes = [];\n const scores = await t10.scores.data();\n for (let i = 0; i < nms.length; i++) {\n const confidence = scores[nms[i]];\n if (confidence > (((_d2 = config3.face.detector) == null ? void 0 : _d2.minConfidence) || 0)) {\n const b = {};\n b.bbox = Ke(t10.boxes, [nms[i], 0], [1, -1]);\n b.slice = Ke(t10.batch, [nms[i], keypointsCount - 1], [1, -1]);\n b.squeeze = Up(b.slice);\n b.landmarks = W(b.squeeze, [keypointsCount, -1]);\n const points = await b.bbox.data();\n const rawBox = {\n startPoint: [points[0], points[1]],\n endPoint: [points[2], points[3]],\n landmarks: await b.landmarks.array(),\n confidence\n };\n b.anchor = Ke(anchors, [nms[i], 0], [1, 2]);\n const anchor = await b.anchor.data();\n const scaledBox = scaleBoxCoordinates(rawBox, [(inputImage.shape[2] || 0) / inputSize4, (inputImage.shape[1] || 0) / inputSize4], anchor);\n const enlargedBox = enlargeBox(scaledBox, config3.face[\"scale\"] || faceBoxScaleFactor);\n const squaredBox = squarifyBox(enlargedBox);\n if (squaredBox.size[0] > (((_e = config3.face.detector) == null ? void 0 : _e[\"minSize\"]) || 0) && squaredBox.size[1] > (((_f2 = config3.face.detector) == null ? void 0 : _f2[\"minSize\"]) || 0))\n boxes.push(squaredBox);\n Object.keys(b).forEach((tensor) => Ot(b[tensor]));\n }\n }\n Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));\n return boxes;\n}\n\n// src/face/iris.ts\nvar model6;\nvar inputSize5 = 0;\nvar irisEnlarge = 2.3;\nvar leftOutline = meshAnnotations.leftEyeLower0;\nvar rightOutline = meshAnnotations.rightEyeLower0;\nvar eyeLandmarks = {\n leftBounds: [leftOutline[0], leftOutline[leftOutline.length - 1]],\n rightBounds: [rightOutline[0], rightOutline[rightOutline.length - 1]]\n};\nvar irisLandmarks = {\n upperCenter: 3,\n lowerCenter: 4,\n index: 71,\n numCoordinates: 76\n};\nasync function load4(config3) {\n var _a2, _b2;\n if (env.initial)\n model6 = null;\n if (!model6)\n model6 = await loadModel((_a2 = config3.face.iris) == null ? void 0 : _a2.modelPath);\n else if (config3.debug)\n log(\"cached model:\", model6[\"modelUrl\"]);\n inputSize5 = (model6 == null ? void 0 : model6[\"executor\"]) && ((_b2 = model6.inputs) == null ? void 0 : _b2[0].shape) ? model6.inputs[0].shape[2] : 0;\n if (inputSize5 === -1)\n inputSize5 = 64;\n return model6;\n}\nfunction replaceIrisCoords(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < irisIndices.length; i++) {\n const { key, indices } = irisIndices[i];\n const originalIndices = meshAnnotations[`${prefix}${key}`];\n if (!keys || keys.includes(key)) {\n for (let j10 = 0; j10 < indices.length; j10++) {\n const index2 = indices[j10];\n rawCoords[originalIndices[j10]] = [\n newCoords[index2][0],\n newCoords[index2][1],\n (newCoords[index2][2] + rawCoords[originalIndices[j10]][2]) / 2\n ];\n }\n }\n }\n}\nvar getLeftToRightEyeDepthDifference = (rawCoords) => {\n const leftEyeZ = rawCoords[eyeLandmarks.leftBounds[0]][2];\n const rightEyeZ = rawCoords[eyeLandmarks.rightBounds[0]][2];\n return leftEyeZ - rightEyeZ;\n};\nvar getEyeBox = (rawCoords, face4, eyeInnerCornerIndex, eyeOuterCornerIndex, meshSize, flip = false) => {\n const box = squarifyBox(enlargeBox(calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), irisEnlarge));\n const boxSize = getBoxSize(box);\n let crop = eK.cropAndResize(face4, [[\n box.startPoint[1] / meshSize,\n box.startPoint[0] / meshSize,\n box.endPoint[1] / meshSize,\n box.endPoint[0] / meshSize\n ]], [0], [inputSize5, inputSize5]);\n if (flip && env.kernels.includes(\"flipleftright\")) {\n const flipped = eK.flipLeftRight(crop);\n Ot(crop);\n crop = flipped;\n }\n return { box, boxSize, crop };\n};\nvar getEyeCoords = (eyeData, eyeBox, eyeBoxSize, flip = false) => {\n const eyeRawCoords = [];\n for (let i = 0; i < irisLandmarks.numCoordinates; i++) {\n const x = eyeData[i * 3];\n const y6 = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip ? 1 - x / inputSize5 : x / inputSize5) * eyeBoxSize[0] + eyeBox.startPoint[0],\n y6 / inputSize5 * eyeBoxSize[1] + eyeBox.startPoint[1],\n z\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(irisLandmarks.index) };\n};\nvar getAdjustedIrisCoords = (rawCoords, irisCoords, direction) => {\n const upperCenterZ = rawCoords[meshAnnotations[`${direction}EyeUpper0`][irisLandmarks.upperCenter]][2];\n const lowerCenterZ = rawCoords[meshAnnotations[`${direction}EyeLower0`][irisLandmarks.lowerCenter]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\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};\nasync function augmentIris(rawCoords, face4, meshSize) {\n if (!(model6 == null ? void 0 : model6[\"executor\"]))\n return rawCoords;\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = getEyeBox(rawCoords, face4, eyeLandmarks.leftBounds[0], eyeLandmarks.leftBounds[1], meshSize, true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = getEyeBox(rawCoords, face4, eyeLandmarks.rightBounds[0], eyeLandmarks.rightBounds[1], meshSize, true);\n const combined = xt([leftEyeCrop, rightEyeCrop]);\n Ot(leftEyeCrop);\n Ot(rightEyeCrop);\n const eyePredictions = model6.execute(combined);\n Ot(combined);\n const eyePredictionsData = await eyePredictions.data();\n Ot(eyePredictions);\n const leftEyeData = eyePredictionsData.slice(0, irisLandmarks.numCoordinates * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(irisLandmarks.numCoordinates * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize, false);\n const leftToRightEyeDepthDifference = getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) {\n replaceIrisCoords(rawCoords, leftEyeRawCoords, \"left\", null);\n replaceIrisCoords(rawCoords, rightEyeRawCoords, \"right\", null);\n } else if (leftToRightEyeDepthDifference < 1) {\n replaceIrisCoords(rawCoords, leftEyeRawCoords, \"left\", [\"EyeUpper0\", \"EyeLower0\"]);\n } else {\n replaceIrisCoords(rawCoords, rightEyeRawCoords, \"right\", [\"EyeUpper0\", \"EyeLower0\"]);\n }\n const adjustedLeftIrisCoords = getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, \"left\");\n const adjustedRightIrisCoords = getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, \"right\");\n const newCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n return newCoords;\n}\n\n// src/face/attention.ts\nasync function augment(rawCoords, results) {\n var _a2, _b2, _c2, _d2, _e, _f2, _g2, _h2, _i2, _j2;\n const t10 = {\n // all attention models produce 2d results so it needs to be later augmented with correct z-coords\n // mesh: results[0], // already have it in rawCoords // output_mesh_identity\n // flag: results[1], // already processed in parent // conv_faceflag\n lips: await ((_b2 = (_a2 = results.filter((r) => r.size === 160)) == null ? void 0 : _a2[0]) == null ? void 0 : _b2.data()),\n // 80 x 2d = 160 // output_lips\n irisL: await ((_d2 = (_c2 = results.filter((r) => r.size === 10)) == null ? void 0 : _c2[0]) == null ? void 0 : _d2.data()),\n // 5 x 2d = 10 // output_right_iris\n eyeL: await ((_f2 = (_e = results.filter((r) => r.size === 142)) == null ? void 0 : _e[0]) == null ? void 0 : _f2.data()),\n // 71 x 2d = 142 // output_right_eye\n irisR: await ((_h2 = (_g2 = results.filter((r) => r.size === 10)) == null ? void 0 : _g2[1]) == null ? void 0 : _h2.data()),\n // 5 x 2d = 10 // output_left_iris\n eyeR: await ((_j2 = (_i2 = results.filter((r) => r.size === 142)) == null ? void 0 : _i2[1]) == null ? void 0 : _j2.data())\n // 71 x 2d = 142// output_left_eye\n };\n for (const val of Object.values(t10)) {\n if (!val)\n return rawCoords;\n }\n const irisLDepth = LANDMARKS_REFINEMENT_LEFT_EYE_CONFIG.reduce((prev, curr) => prev += rawCoords[curr][2], 0) / LANDMARKS_REFINEMENT_LEFT_EYE_CONFIG.length;\n for (let i = 0; i < t10.irisL.length / 2; i++)\n rawCoords.push([t10.irisL[2 * i + 0], t10.irisL[2 * i + 1], irisLDepth]);\n const irisRDepth = LANDMARKS_REFINEMENT_RIGHT_EYE_CONFIG.reduce((prev, curr) => prev += rawCoords[curr][2], 0) / LANDMARKS_REFINEMENT_RIGHT_EYE_CONFIG.length;\n for (let i = 0; i < t10.irisR.length / 2; i++)\n rawCoords.push([t10.irisR[2 * i + 0], t10.irisR[2 * i + 1], irisRDepth]);\n for (let i = 0; i < t10.eyeL.length / 2; i++)\n rawCoords[LANDMARKS_REFINEMENT_LEFT_EYE_CONFIG[i]] = [t10.eyeL[2 * i + 0], t10.eyeL[2 * i + 1], rawCoords[LANDMARKS_REFINEMENT_LEFT_EYE_CONFIG[i]][2]];\n for (let i = 0; i < t10.eyeR.length / 2; i++)\n rawCoords[LANDMARKS_REFINEMENT_RIGHT_EYE_CONFIG[i]] = [t10.eyeR[2 * i + 0], t10.eyeR[2 * i + 1], rawCoords[LANDMARKS_REFINEMENT_RIGHT_EYE_CONFIG[i]][2]];\n for (let i = 0; i < t10.lips.length / 2; i++)\n rawCoords[LANDMARKS_REFINEMENT_LIPS_CONFIG[i]] = [t10.lips[2 * i + 0], t10.lips[2 * i + 1], rawCoords[LANDMARKS_REFINEMENT_LIPS_CONFIG[i]][2]];\n return rawCoords;\n}\n\n// src/face/facemesh.ts\nvar cache3 = {\n boxes: [],\n skipped: Number.MAX_SAFE_INTEGER,\n timestamp: 0\n};\nvar model7 = null;\nvar inputSize6 = 0;\nasync function predict4(input, config3) {\n var _a2, _b2, _c2, _d2, _e, _f2, _g2, _h2, _i2, _j2;\n const skipTime = (((_a2 = config3.face.detector) == null ? void 0 : _a2.skipTime) || 0) > now() - cache3.timestamp;\n const skipFrame = cache3.skipped < (((_b2 = config3.face.detector) == null ? void 0 : _b2.skipFrames) || 0);\n if (!config3.skipAllowed || !skipTime || !skipFrame || cache3.boxes.length === 0) {\n cache3.boxes = await getBoxes(input, config3);\n cache3.timestamp = now();\n cache3.skipped = 0;\n } else {\n cache3.skipped++;\n }\n const faces = [];\n const newCache = [];\n let id2 = 0;\n const size2 = inputSize6;\n for (let i = 0; i < cache3.boxes.length; i++) {\n const box = cache3.boxes[i];\n let angle = 0;\n let rotationMatrix;\n const face4 = {\n // init face result\n id: id2++,\n mesh: [],\n meshRaw: [],\n box: [0, 0, 0, 0],\n boxRaw: [0, 0, 0, 0],\n score: 0,\n boxScore: 0,\n faceScore: 0,\n size: [0, 0],\n // contoursRaw: [],\n // contours: [],\n annotations: {}\n };\n [angle, rotationMatrix, face4.tensor] = correctFaceRotation((_c2 = config3.face.detector) == null ? void 0 : _c2.rotation, box, input, ((_d2 = config3.face.mesh) == null ? void 0 : _d2.enabled) ? inputSize6 : size());\n if (config3.filter.equalization) {\n const equilized = face4.tensor ? await histogramEqualization(face4.tensor) : void 0;\n Ot(face4.tensor);\n if (equilized)\n face4.tensor = equilized;\n }\n face4.boxScore = Math.round(100 * box.confidence) / 100;\n if (!((_e = config3.face.mesh) == null ? void 0 : _e.enabled) || !(model7 == null ? void 0 : model7[\"executor\"])) {\n face4.box = clampBox(box, input);\n face4.boxRaw = getRawBox(box, input);\n face4.score = face4.boxScore;\n face4.size = box.size;\n face4.mesh = box.landmarks;\n face4.meshRaw = face4.mesh.map((pt) => [pt[0] / (input.shape[2] || 0), pt[1] / (input.shape[1] || 0), (pt[2] || 0) / size2]);\n for (const key of Object.keys(blazeFaceLandmarks))\n face4.annotations[key] = [face4.mesh[blazeFaceLandmarks[key]]];\n } else if (!model7) {\n if (config3.debug)\n log(\"face mesh detection requested, but model is not loaded\");\n } else {\n if (((_f2 = config3.face.attention) == null ? void 0 : _f2.enabled) && !env.kernels.includes(\"atan2\")) {\n config3.face.attention.enabled = false;\n Ot(face4.tensor);\n return faces;\n }\n const results = model7.execute(face4.tensor);\n const confidenceT = results.find((t10) => t10.shape[t10.shape.length - 1] === 1);\n const faceConfidence = await confidenceT.data();\n face4.faceScore = Math.round(100 * faceConfidence[0]) / 100;\n if (face4.faceScore < (((_g2 = config3.face.detector) == null ? void 0 : _g2.minConfidence) || 1)) {\n box.confidence = face4.faceScore;\n if (config3.face.mesh[\"keepInvalid\"]) {\n face4.box = clampBox(box, input);\n face4.boxRaw = getRawBox(box, input);\n face4.score = face4.boxScore;\n face4.mesh = box.landmarks;\n face4.meshRaw = face4.mesh.map((pt) => [pt[0] / (input.shape[2] || 1), pt[1] / (input.shape[1] || 1), (pt[2] || 0) / size2]);\n for (const key of Object.keys(blazeFaceLandmarks)) {\n face4.annotations[key] = [face4.mesh[blazeFaceLandmarks[key]]];\n }\n }\n } else {\n const meshT = results.find((t10) => t10.shape[t10.shape.length - 1] === 1404);\n const coordsReshaped = W(meshT, [-1, 3]);\n let rawCoords = await coordsReshaped.array();\n Ot(coordsReshaped);\n if ((_h2 = config3.face.attention) == null ? void 0 : _h2.enabled) {\n rawCoords = await augment(rawCoords, results);\n } else if ((_i2 = config3.face.iris) == null ? void 0 : _i2.enabled) {\n rawCoords = await augmentIris(rawCoords, face4.tensor, inputSize6);\n }\n face4.mesh = transformRawCoords(rawCoords, box, angle, rotationMatrix, inputSize6);\n face4.meshRaw = face4.mesh.map((pt) => [pt[0] / (input.shape[2] || 0), pt[1] / (input.shape[1] || 0), (pt[2] || 0) / size2]);\n for (const key of Object.keys(meshAnnotations))\n face4.annotations[key] = meshAnnotations[key].map((index2) => face4.mesh[index2]);\n face4.score = face4.faceScore;\n const calculatedBox = {\n ...calculateFaceBox(face4.mesh, box),\n confidence: box.confidence,\n landmarks: box.landmarks,\n size: box.size\n };\n face4.box = clampBox(calculatedBox, input);\n face4.boxRaw = getRawBox(calculatedBox, input);\n newCache.push(calculatedBox);\n }\n Ot(results);\n }\n if (face4.score > (((_j2 = config3.face.detector) == null ? void 0 : _j2.minConfidence) || 1))\n faces.push(face4);\n else\n Ot(face4.tensor);\n }\n cache3.boxes = newCache;\n return faces;\n}\nasync function load5(config3) {\n var _a2, _b2, _c2, _d2, _e, _f2;\n if (env.initial)\n model7 = null;\n if (((_a2 = config3.face.attention) == null ? void 0 : _a2.enabled) && (model7 == null ? void 0 : model7[\"signature\"])) {\n if (Object.keys(((_b2 = model7 == null ? void 0 : model7[\"signature\"]) == null ? void 0 : _b2.outputs) || {}).length < 6)\n model7 = null;\n }\n if (!model7) {\n if ((_c2 = config3.face.attention) == null ? void 0 : _c2.enabled)\n model7 = await loadModel(config3.face.attention.modelPath);\n else\n model7 = await loadModel((_d2 = config3.face.mesh) == null ? void 0 : _d2.modelPath);\n } else if (config3.debug) {\n log(\"cached model:\", model7[\"modelUrl\"]);\n }\n inputSize6 = model7[\"executor\"] && ((_e = model7 == null ? void 0 : model7.inputs) == null ? void 0 : _e[0].shape) ? (_f2 = model7 == null ? void 0 : model7.inputs) == null ? void 0 : _f2[0].shape[2] : 256;\n return model7;\n}\nvar triangulation = TRI468;\nvar uvmap = UV468;\n\n// src/gear/emotion.ts\nvar annotations = [];\nvar model8;\nvar last3 = [];\nvar lastCount = 0;\nvar lastTime4 = 0;\nvar skipped4 = Number.MAX_SAFE_INTEGER;\nvar rgb = false;\nasync function load6(config3) {\n var _a2, _b2, _c2;\n if (env.initial)\n model8 = null;\n if (!model8) {\n model8 = await loadModel((_a2 = config3.face.emotion) == null ? void 0 : _a2.modelPath);\n rgb = ((_c2 = (_b2 = model8 == null ? void 0 : model8.inputs) == null ? void 0 : _b2[0].shape) == null ? void 0 : _c2[3]) === 3;\n if (!rgb)\n annotations = [\"angry\", \"disgust\", \"fear\", \"happy\", \"sad\", \"surprise\", \"neutral\"];\n else\n annotations = [\"angry\", \"disgust\", \"fear\", \"happy\", \"neutral\", \"sad\", \"surprise\"];\n } else if (config3.debug) {\n log(\"cached model:\", model8[\"modelUrl\"]);\n }\n return model8;\n}\nasync function predict5(image, config3, idx, count2) {\n var _a2, _b2;\n if (!model8)\n return [];\n const skipFrame = skipped4 < (((_a2 = config3.face.emotion) == null ? void 0 : _a2.skipFrames) || 0);\n const skipTime = (((_b2 = config3.face.emotion) == null ? void 0 : _b2.skipTime) || 0) > now() - lastTime4;\n if (config3.skipAllowed && skipTime && skipFrame && lastCount === count2 && last3[idx] && last3[idx].length > 0) {\n skipped4++;\n return last3[idx];\n }\n skipped4 = 0;\n return new Promise(async (resolve) => {\n var _a3;\n const obj = [];\n if ((_a3 = config3.face.emotion) == null ? void 0 : _a3.enabled) {\n const t10 = {};\n const inputSize10 = (model8 == null ? void 0 : model8.inputs[0].shape) ? model8.inputs[0].shape[2] : 0;\n if (config3.face.emotion[\"crop\"] > 0) {\n const crop = config3.face.emotion[\"crop\"];\n const box = [[crop, crop, 1 - crop, 1 - crop]];\n t10.resize = eK.cropAndResize(image, box, [0], [inputSize10, inputSize10]);\n } else {\n t10.resize = eK.resizeBilinear(image, [inputSize10, inputSize10], false);\n }\n if (rgb) {\n t10.mul = ne(t10.resize, 255);\n t10.normalize = ke(t10.mul, [103.939, 116.779, 123.68]);\n t10.emotion = model8 == null ? void 0 : model8.execute(t10.normalize);\n } else {\n t10.channels = ne(t10.resize, constants.rgb);\n t10.grayscale = et(t10.channels, 3, true);\n t10.grayscaleSub = ke(t10.grayscale, constants.tf05);\n t10.grayscaleMul = ne(t10.grayscaleSub, constants.tf2);\n t10.emotion = model8 == null ? void 0 : model8.execute(t10.grayscaleMul);\n }\n lastTime4 = now();\n const data = await t10.emotion.data();\n for (let i = 0; i < data.length; i++) {\n if (data[i] > (config3.face.emotion.minConfidence || 0))\n obj.push({ score: Math.min(0.99, Math.trunc(100 * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));\n }\n last3[idx] = obj;\n lastCount = count2;\n resolve(obj);\n });\n}\n\n// src/face/faceres.ts\nvar model9;\nvar last4 = [];\nvar lastTime5 = 0;\nvar lastCount2 = 0;\nvar skipped5 = Number.MAX_SAFE_INTEGER;\nasync function load7(config3) {\n var _a2;\n if (env.initial)\n model9 = null;\n if (!model9)\n model9 = await loadModel((_a2 = config3.face.description) == null ? void 0 : _a2.modelPath);\n else if (config3.debug)\n log(\"cached model:\", model9[\"modelUrl\"]);\n return model9;\n}\nfunction enhance(input) {\n const tensor = input.image || input.tensor || input;\n if (!(model9 == null ? void 0 : model9.inputs[0].shape))\n return tensor;\n const crop = eK.resizeBilinear(tensor, [model9.inputs[0].shape[2], model9.inputs[0].shape[1]], false);\n const norm = ne(crop, constants.tf255);\n Ot(crop);\n return norm;\n}\nasync function predict6(image, config3, idx, count2) {\n var _a2, _b2, _c2, _d2;\n const obj = {\n age: 0,\n gender: \"unknown\",\n genderScore: 0,\n descriptor: []\n };\n if (!(model9 == null ? void 0 : model9[\"executor\"]))\n return obj;\n const skipFrame = skipped5 < (((_a2 = config3.face.description) == null ? void 0 : _a2.skipFrames) || 0);\n const skipTime = (((_b2 = config3.face.description) == null ? void 0 : _b2.skipTime) || 0) > now() - lastTime5;\n if (config3.skipAllowed && skipFrame && skipTime && lastCount2 === count2 && ((_c2 = last4 == null ? void 0 : last4[idx]) == null ? void 0 : _c2.age) > 0 && ((_d2 = last4 == null ? void 0 : last4[idx]) == null ? void 0 : _d2.genderScore) > 0) {\n skipped5++;\n return last4[idx];\n }\n skipped5 = 0;\n return new Promise(async (resolve) => {\n var _a3;\n if ((_a3 = config3.face.description) == null ? void 0 : _a3.enabled) {\n const enhanced = enhance(image);\n const resT = model9 == null ? void 0 : model9.execute(enhanced);\n lastTime5 = now();\n Ot(enhanced);\n const genderT = resT.find((t10) => t10.shape[1] === 1);\n const gender2 = await genderT.data();\n const confidence = Math.trunc(200 * Math.abs(gender2[0] - 0.5)) / 100;\n if (confidence > (config3.face.description.minConfidence || 0)) {\n obj.gender = gender2[0] <= 0.5 ? \"female\" : \"male\";\n obj.genderScore = Math.min(0.99, confidence);\n }\n const argmax = X0(resT.find((t10) => t10.shape[1] === 100), 1);\n const ageIdx = (await argmax.data())[0];\n Ot(argmax);\n const ageT = resT.find((t10) => t10.shape[1] === 100);\n const all2 = await ageT.data();\n obj.age = Math.round(all2[ageIdx - 1] > all2[ageIdx + 1] ? 10 * ageIdx - 100 * all2[ageIdx - 1] : 10 * ageIdx + 100 * all2[ageIdx + 1]) / 10;\n if (Number.isNaN(gender2[0]) || Number.isNaN(all2[0]))\n log(\"faceres error:\", { model: model9, result: resT });\n const desc = resT.find((t10) => t10.shape[1] === 1024);\n const descriptor = desc ? await desc.data() : [];\n obj.descriptor = Array.from(descriptor);\n resT.forEach((t10) => Ot(t10));\n }\n last4[idx] = obj;\n lastCount2 = count2;\n resolve(obj);\n });\n}\n\n// src/face/mask.ts\nvar expandFact = 0.1;\nvar alpha = 0.5;\nfunction insidePoly(x, y6, polygon) {\n let inside = false;\n let j10 = polygon.length - 1;\n for (let i = 0; i < polygon.length; j10 = i++) {\n if (polygon[i].y > y6 !== polygon[j10].y > y6 && x < (polygon[j10].x - polygon[i].x) * (y6 - polygon[i].y) / (polygon[j10].y - polygon[i].y) + polygon[i].x)\n inside = !inside;\n }\n return inside;\n}\nasync function mask(face4) {\n if (!face4.tensor)\n return face4.tensor;\n if (!face4.mesh || face4.mesh.length < 100)\n return face4.tensor;\n const width = face4.tensor.shape[2] || 0;\n const height = face4.tensor.shape[1] || 0;\n const buffer = await face4.tensor.buffer();\n let silhouette = [];\n for (const pt of meshAnnotations.silhouette)\n silhouette.push({ x: (face4.mesh[pt][0] - face4.box[0]) / face4.box[2], y: (face4.mesh[pt][1] - face4.box[1]) / face4.box[3] });\n if (expandFact && expandFact > 0)\n silhouette = silhouette.map((pt) => ({ x: pt.x > 0.5 ? pt.x + expandFact : pt.x - expandFact, y: pt.y > 0.5 ? pt.y + expandFact : pt.y - expandFact }));\n for (let x = 0; x < width; x++) {\n for (let y6 = 0; y6 < height; y6++) {\n const inside = insidePoly(x / width, y6 / width, silhouette);\n if (!inside) {\n buffer.set(alpha * buffer.get(0, y6, x, 0), 0, y6, x, 0);\n buffer.set(alpha * buffer.get(0, y6, x, 1), 0, y6, x, 1);\n buffer.set(alpha * buffer.get(0, y6, x, 2), 0, y6, x, 2);\n }\n }\n }\n const output = buffer.toTensor();\n return output;\n}\n\n// src/face/antispoof.ts\nvar model10;\nvar cached = [];\nvar skipped6 = Number.MAX_SAFE_INTEGER;\nvar lastCount3 = 0;\nvar lastTime6 = 0;\nasync function load8(config3) {\n var _a2;\n if (env.initial)\n model10 = null;\n if (!model10)\n model10 = await loadModel((_a2 = config3.face.antispoof) == null ? void 0 : _a2.modelPath);\n else if (config3.debug)\n log(\"cached model:\", model10[\"modelUrl\"]);\n return model10;\n}\nasync function predict7(image, config3, idx, count2) {\n var _a2, _b2;\n if (!(model10 == null ? void 0 : model10[\"executor\"]))\n return 0;\n const skipTime = (((_a2 = config3.face.antispoof) == null ? void 0 : _a2.skipTime) || 0) > now() - lastTime6;\n const skipFrame = skipped6 < (((_b2 = config3.face.antispoof) == null ? void 0 : _b2.skipFrames) || 0);\n if (config3.skipAllowed && skipTime && skipFrame && lastCount3 === count2 && cached[idx]) {\n skipped6++;\n return cached[idx];\n }\n skipped6 = 0;\n return new Promise(async (resolve) => {\n const resize = eK.resizeBilinear(image, [(model10 == null ? void 0 : model10.inputs[0].shape) ? model10.inputs[0].shape[2] : 0, (model10 == null ? void 0 : model10.inputs[0].shape) ? model10.inputs[0].shape[1] : 0], false);\n const res = model10 == null ? void 0 : model10.execute(resize);\n const num = (await res.data())[0];\n cached[idx] = Math.round(100 * num) / 100;\n lastCount3 = count2;\n lastTime6 = now();\n Ot([resize, res]);\n resolve(cached[idx]);\n });\n}\n\n// src/face/liveness.ts\nvar model11;\nvar cached2 = [];\nvar skipped7 = Number.MAX_SAFE_INTEGER;\nvar lastCount4 = 0;\nvar lastTime7 = 0;\nasync function load9(config3) {\n var _a2;\n if (env.initial)\n model11 = null;\n if (!model11)\n model11 = await loadModel((_a2 = config3.face.liveness) == null ? void 0 : _a2.modelPath);\n else if (config3.debug)\n log(\"cached model:\", model11[\"modelUrl\"]);\n return model11;\n}\nasync function predict8(image, config3, idx, count2) {\n var _a2, _b2;\n if (!(model11 == null ? void 0 : model11[\"executor\"]))\n return 0;\n const skipTime = (((_a2 = config3.face.liveness) == null ? void 0 : _a2.skipTime) || 0) > now() - lastTime7;\n const skipFrame = skipped7 < (((_b2 = config3.face.liveness) == null ? void 0 : _b2.skipFrames) || 0);\n if (config3.skipAllowed && skipTime && skipFrame && lastCount4 === count2 && cached2[idx]) {\n skipped7++;\n return cached2[idx];\n }\n skipped7 = 0;\n return new Promise(async (resolve) => {\n const resize = eK.resizeBilinear(image, [(model11 == null ? void 0 : model11.inputs[0].shape) ? model11.inputs[0].shape[2] : 0, (model11 == null ? void 0 : model11.inputs[0].shape) ? model11.inputs[0].shape[1] : 0], false);\n const res = model11 == null ? void 0 : model11.execute(resize);\n const num = (await res.data())[0];\n cached2[idx] = Math.round(100 * num) / 100;\n lastCount4 = count2;\n lastTime7 = now();\n Ot([resize, res]);\n resolve(cached2[idx]);\n });\n}\n\n// src/gear/gear.ts\nvar model12;\nvar last5 = [];\nvar raceNames = [\"white\", \"black\", \"asian\", \"indian\", \"other\"];\nvar ageWeights = [15, 23, 28, 35.5, 45.5, 55.5, 65];\nvar lastCount5 = 0;\nvar lastTime8 = 0;\nvar skipped8 = Number.MAX_SAFE_INTEGER;\nasync function load10(config3) {\n var _a2;\n if (env.initial)\n model12 = null;\n if (!model12)\n model12 = await loadModel((_a2 = config3.face.gear) == null ? void 0 : _a2.modelPath);\n else if (config3.debug)\n log(\"cached model:\", model12[\"modelUrl\"]);\n return model12;\n}\nasync function predict9(image, config3, idx, count2) {\n var _a2, _b2;\n if (!model12)\n return { age: 0, gender: \"unknown\", genderScore: 0, race: [] };\n const skipFrame = skipped8 < (((_a2 = config3.face.gear) == null ? void 0 : _a2.skipFrames) || 0);\n const skipTime = (((_b2 = config3.face.gear) == null ? void 0 : _b2.skipTime) || 0) > now() - lastTime8;\n if (config3.skipAllowed && skipTime && skipFrame && lastCount5 === count2 && last5[idx]) {\n skipped8++;\n return last5[idx];\n }\n skipped8 = 0;\n return new Promise(async (resolve) => {\n var _a3, _b3;\n if (!(model12 == null ? void 0 : model12.inputs[0].shape))\n return;\n const t10 = {};\n const box = [[0, 0.1, 0.9, 0.9]];\n t10.resize = eK.cropAndResize(image, box, [0], [model12.inputs[0].shape[2], model12.inputs[0].shape[1]]);\n const obj = { age: 0, gender: \"unknown\", genderScore: 0, race: [] };\n if ((_a3 = config3.face.gear) == null ? void 0 : _a3.enabled)\n [t10.age, t10.gender, t10.race] = model12.execute(t10.resize, [\"age_output\", \"gender_output\", \"race_output\"]);\n const gender2 = await t10.gender.data();\n obj.gender = gender2[0] > gender2[1] ? \"male\" : \"female\";\n obj.genderScore = Math.round(100 * (gender2[0] > gender2[1] ? gender2[0] : gender2[1])) / 100;\n const race = await t10.race.data();\n for (let i = 0; i < race.length; i++) {\n if (race[i] > (((_b3 = config3.face.gear) == null ? void 0 : _b3.minConfidence) || 0.2))\n obj.race.push({ score: Math.round(100 * race[i]) / 100, race: raceNames[i] });\n }\n obj.race.sort((a, b) => b.score - a.score);\n const ageDistribution = Array.from(await t10.age.data());\n const ageSorted = ageDistribution.map((a, i) => [ageWeights[i], a]).sort((a, b) => b[1] - a[1]);\n let age2 = ageSorted[0][0];\n for (let i = 1; i < ageSorted.length; i++)\n age2 += ageSorted[i][1] * (ageSorted[i][0] - age2);\n obj.age = Math.round(10 * age2) / 10;\n Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));\n last5[idx] = obj;\n lastCount5 = count2;\n lastTime8 = now();\n resolve(obj);\n });\n}\n\n// src/gear/ssrnet-age.ts\nvar model13;\nvar last6 = [];\nvar lastCount6 = 0;\nvar lastTime9 = 0;\nvar skipped9 = Number.MAX_SAFE_INTEGER;\nasync function load11(config3) {\n if (env.initial)\n model13 = null;\n if (!model13)\n model13 = await loadModel(config3.face[\"ssrnet\"].modelPathAge);\n else if (config3.debug)\n log(\"cached model:\", model13[\"modelUrl\"]);\n return model13;\n}\nasync function predict10(image, config3, idx, count2) {\n var _a2, _b2, _c2, _d2;\n if (!model13)\n return { age: 0 };\n const skipFrame = skipped9 < (((_a2 = config3.face[\"ssrnet\"]) == null ? void 0 : _a2.skipFrames) || 0);\n const skipTime = (((_b2 = config3.face[\"ssrnet\"]) == null ? void 0 : _b2.skipTime) || 0) > now() - lastTime9;\n if (config3.skipAllowed && skipFrame && skipTime && lastCount6 === count2 && ((_c2 = last6[idx]) == null ? void 0 : _c2.age) && ((_d2 = last6[idx]) == null ? void 0 : _d2.age) > 0) {\n skipped9++;\n return last6[idx];\n }\n skipped9 = 0;\n return new Promise(async (resolve) => {\n var _a3;\n if (!(model13 == null ? void 0 : model13.inputs) || !model13.inputs[0] || !model13.inputs[0].shape)\n return;\n const t10 = {};\n t10.resize = eK.resizeBilinear(image, [model13.inputs[0].shape[2], model13.inputs[0].shape[1]], false);\n t10.enhance = ne(t10.resize, constants.tf255);\n const obj = { age: 0 };\n if ((_a3 = config3.face[\"ssrnet\"]) == null ? void 0 : _a3.enabled)\n t10.age = model13.execute(t10.enhance);\n if (t10.age) {\n const data = await t10.age.data();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));\n last6[idx] = obj;\n lastCount6 = count2;\n lastTime9 = now();\n resolve(obj);\n });\n}\n\n// src/gear/ssrnet-gender.ts\nvar model14;\nvar last7 = [];\nvar lastCount7 = 0;\nvar lastTime10 = 0;\nvar skipped10 = Number.MAX_SAFE_INTEGER;\nvar rgb2 = [0.2989, 0.587, 0.114];\nasync function load12(config3) {\n var _a2;\n if (env.initial)\n model14 = null;\n if (!model14)\n model14 = await loadModel((_a2 = config3.face[\"ssrnet\"]) == null ? void 0 : _a2.modelPathGender);\n else if (config3.debug)\n log(\"cached model:\", model14[\"modelUrl\"]);\n return model14;\n}\nasync function predict11(image, config3, idx, count2) {\n var _a2, _b2, _c2, _d2;\n if (!model14)\n return { gender: \"unknown\", genderScore: 0 };\n const skipFrame = skipped10 < (((_a2 = config3.face[\"ssrnet\"]) == null ? void 0 : _a2.skipFrames) || 0);\n const skipTime = (((_b2 = config3.face[\"ssrnet\"]) == null ? void 0 : _b2.skipTime) || 0) > now() - lastTime10;\n if (config3.skipAllowed && skipFrame && skipTime && lastCount7 === count2 && ((_c2 = last7[idx]) == null ? void 0 : _c2.gender) && ((_d2 = last7[idx]) == null ? void 0 : _d2.genderScore) > 0) {\n skipped10++;\n return last7[idx];\n }\n skipped10 = 0;\n return new Promise(async (resolve) => {\n var _a3;\n if (!(model14 == null ? void 0 : model14.inputs[0].shape))\n return;\n const t10 = {};\n t10.resize = eK.resizeBilinear(image, [model14.inputs[0].shape[2], model14.inputs[0].shape[1]], false);\n t10.enhance = Ee(() => {\n const [red, green, blue] = Oa(t10.resize, 3, 3);\n const redNorm = ne(red, rgb2[0]);\n const greenNorm = ne(green, rgb2[1]);\n const blueNorm = ne(blue, rgb2[2]);\n const grayscale = K0([redNorm, greenNorm, blueNorm]);\n const normalize2 = ne(ke(grayscale, constants.tf05), 2);\n return normalize2;\n });\n const obj = { gender: \"unknown\", genderScore: 0 };\n if ((_a3 = config3.face[\"ssrnet\"]) == null ? void 0 : _a3.enabled)\n t10.gender = model14.execute(t10.enhance);\n const data = await t10.gender.data();\n obj.gender = data[0] > data[1] ? \"female\" : \"male\";\n obj.genderScore = data[0] > data[1] ? Math.trunc(100 * data[0]) / 100 : Math.trunc(100 * data[1]) / 100;\n Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));\n last7[idx] = obj;\n lastCount7 = count2;\n lastTime10 = now();\n resolve(obj);\n });\n}\n\n// src/face/mobilefacenet.ts\nvar model15;\nvar last8 = [];\nvar lastCount8 = 0;\nvar lastTime11 = 0;\nvar skipped11 = Number.MAX_SAFE_INTEGER;\nasync function load13(config3) {\n var _a2;\n if (env.initial)\n model15 = null;\n if (!model15)\n model15 = await loadModel((_a2 = config3.face[\"mobilefacenet\"]) == null ? void 0 : _a2.modelPath);\n else if (config3.debug)\n log(\"cached model:\", model15[\"modelUrl\"]);\n return model15;\n}\nasync function predict12(input, config3, idx, count2) {\n var _a2, _b2;\n if (!(model15 == null ? void 0 : model15[\"executor\"]))\n return [];\n const skipFrame = skipped11 < (((_a2 = config3.face[\"mobilefacenet\"]) == null ? void 0 : _a2.skipFrames) || 0);\n const skipTime = (((_b2 = config3.face[\"mobilefacenet\"]) == null ? void 0 : _b2.skipTime) || 0) > now() - lastTime11;\n if (config3.skipAllowed && skipTime && skipFrame && lastCount8 === count2 && last8[idx]) {\n skipped11++;\n return last8[idx];\n }\n return new Promise(async (resolve) => {\n var _a3;\n let data = [];\n if (((_a3 = config3.face[\"mobilefacenet\"]) == null ? void 0 : _a3.enabled) && (model15 == null ? void 0 : model15.inputs[0].shape)) {\n const t10 = {};\n t10.crop = eK.resizeBilinear(input, [model15.inputs[0].shape[2], model15.inputs[0].shape[1]], false);\n t10.data = model15.execute(t10.crop);\n const output = await t10.data.data();\n data = Array.from(output);\n Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));\n }\n last8[idx] = data;\n lastCount8 = count2;\n lastTime11 = now();\n resolve(data);\n });\n}\n\n// src/face/insightface.ts\nvar model16;\nvar last9 = [];\nvar lastCount9 = 0;\nvar lastTime12 = 0;\nvar skipped12 = Number.MAX_SAFE_INTEGER;\nasync function load14(config3) {\n if (env.initial)\n model16 = null;\n if (!model16)\n model16 = await loadModel(config3.face[\"insightface\"].modelPath);\n else if (config3.debug)\n log(\"cached model:\", model16[\"modelUrl\"]);\n return model16;\n}\nasync function predict13(input, config3, idx, count2) {\n var _a2, _b2;\n if (!(model16 == null ? void 0 : model16[\"executor\"]))\n return [];\n const skipFrame = skipped12 < (((_a2 = config3.face[\"insightface\"]) == null ? void 0 : _a2.skipFrames) || 0);\n const skipTime = (((_b2 = config3.face[\"insightface\"]) == null ? void 0 : _b2.skipTime) || 0) > now() - lastTime12;\n if (config3.skipAllowed && skipTime && skipFrame && lastCount9 === count2 && last9[idx]) {\n skipped12++;\n return last9[idx];\n }\n return new Promise(async (resolve) => {\n var _a3;\n let data = [];\n if (((_a3 = config3.face[\"insightface\"]) == null ? void 0 : _a3.enabled) && (model16 == null ? void 0 : model16.inputs[0].shape)) {\n const t10 = {};\n t10.crop = eK.resizeBilinear(input, [model16.inputs[0].shape[2], model16.inputs[0].shape[1]], false);\n t10.data = model16.execute(t10.crop);\n const output = await t10.data.data();\n data = Array.from(output);\n Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));\n }\n last9[idx] = data;\n lastCount9 = count2;\n lastTime12 = now();\n resolve(data);\n });\n}\n\n// src/face/angles.ts\nvar calculateGaze = (face4) => {\n const radians = (pt1, pt2) => Math.atan2(pt1[1] - pt2[1], pt1[0] - pt2[0]);\n if (!face4.annotations.rightEyeIris || !face4.annotations.leftEyeIris)\n return { bearing: 0, strength: 0 };\n const offsetIris = [0, -0.1];\n const eyeRatio = 1;\n const left = (face4.mesh[33][2] || 0) > (face4.mesh[263][2] || 0);\n const irisCenter = left ? face4.mesh[473] : face4.mesh[468];\n const eyeCenter = left ? [(face4.mesh[133][0] + face4.mesh[33][0]) / 2, (face4.mesh[133][1] + face4.mesh[33][1]) / 2] : [(face4.mesh[263][0] + face4.mesh[362][0]) / 2, (face4.mesh[263][1] + face4.mesh[362][1]) / 2];\n const eyeSize = left ? [face4.mesh[133][0] - face4.mesh[33][0], face4.mesh[23][1] - face4.mesh[27][1]] : [face4.mesh[263][0] - face4.mesh[362][0], face4.mesh[253][1] - face4.mesh[257][1]];\n const eyeDiff = [\n // x distance between extreme point and center point normalized with eye size\n (eyeCenter[0] - irisCenter[0]) / eyeSize[0] - offsetIris[0],\n eyeRatio * (irisCenter[1] - eyeCenter[1]) / eyeSize[1] - offsetIris[1]\n ];\n let strength = Math.sqrt(eyeDiff[0] * eyeDiff[0] + eyeDiff[1] * eyeDiff[1]);\n strength = Math.min(strength, face4.boxRaw[2] / 2, face4.boxRaw[3] / 2);\n const bearing = (radians([0, 0], eyeDiff) + Math.PI / 2) % Math.PI;\n return { bearing, strength };\n};\nvar calculateFaceAngle = (face4, imageSize) => {\n const normalize2 = (v10) => {\n const length = Math.sqrt(v10[0] * v10[0] + v10[1] * v10[1] + v10[2] * v10[2]);\n v10[0] /= length;\n v10[1] /= length;\n v10[2] /= length;\n return v10;\n };\n const subVectors = (a, b) => {\n const x = a[0] - b[0];\n const y6 = a[1] - b[1];\n const z = a[2] - b[2];\n return [x, y6, z];\n };\n const crossVectors = (a, b) => {\n const x = a[1] * b[2] - a[2] * b[1];\n const y6 = a[2] * b[0] - a[0] * b[2];\n const z = a[0] * b[1] - a[1] * b[0];\n return [x, y6, z];\n };\n const rotationMatrixToEulerAngle = (r) => {\n const [r00, _r01, _r02, r10, r11, r12, r20, r21, r22] = r;\n let thetaX;\n let thetaY;\n let thetaZ;\n if (r10 < 1) {\n if (r10 > -1) {\n thetaZ = Math.asin(r10);\n thetaY = Math.atan2(-r20, r00);\n thetaX = Math.atan2(-r12, r11);\n } else {\n thetaZ = -Math.PI / 2;\n thetaY = -Math.atan2(r21, r22);\n thetaX = 0;\n }\n } else {\n thetaZ = Math.PI / 2;\n thetaY = Math.atan2(r21, r22);\n thetaX = 0;\n }\n if (Number.isNaN(thetaX))\n thetaX = 0;\n if (Number.isNaN(thetaY))\n thetaY = 0;\n if (Number.isNaN(thetaZ))\n thetaZ = 0;\n return { pitch: 2 * -thetaX, yaw: 2 * -thetaY, roll: 2 * -thetaZ };\n };\n const mesh = face4.meshRaw;\n if (!mesh || mesh.length < 300)\n return { angle: { pitch: 0, yaw: 0, roll: 0 }, matrix: [1, 0, 0, 0, 1, 0, 0, 0, 1], gaze: { bearing: 0, strength: 0 } };\n const size2 = Math.max(face4.boxRaw[2] * imageSize[0], face4.boxRaw[3] * imageSize[1]) / 1.5;\n const pts = [mesh[10], mesh[152], mesh[234], mesh[454]].map((pt) => [pt[0] * imageSize[0] / size2, pt[1] * imageSize[1] / size2, pt[2]]);\n const yAxis = normalize2(subVectors(pts[1], pts[0]));\n let xAxis = normalize2(subVectors(pts[3], pts[2]));\n const zAxis = normalize2(crossVectors(xAxis, yAxis));\n xAxis = crossVectors(yAxis, zAxis);\n const matrix = [\n xAxis[0],\n xAxis[1],\n xAxis[2],\n yAxis[0],\n yAxis[1],\n yAxis[2],\n zAxis[0],\n zAxis[1],\n zAxis[2]\n ];\n const angle = rotationMatrixToEulerAngle(matrix);\n const gaze = mesh.length === 478 ? calculateGaze(face4) : { bearing: 0, strength: 0 };\n return { angle, matrix, gaze };\n};\n\n// src/face/anthropometry.ts\nfunction calculateCameraDistance(face4, width) {\n const f = face4 == null ? void 0 : face4.annotations;\n if (!(f == null ? void 0 : f.leftEyeIris) || !(f == null ? void 0 : f.rightEyeIris))\n return 0;\n const irisSize = Math.max(Math.abs(f.leftEyeIris[3][0] - f.leftEyeIris[1][0]), Math.abs(f.rightEyeIris[3][0] - f.rightEyeIris[1][0])) / width;\n const cameraDistance = Math.round(1.17 / irisSize) / 100;\n return cameraDistance;\n}\n\n// src/face/face.ts\nvar detectFace = async (instance, input) => {\n var _a2, _b2, _c2, _d2, _e, _f2, _g2, _h2, _i2, _j2, _k, _l2, _m2, _n2, _o2, _p2, _q2, _r2, _s2, _t, _u2, _v2, _w2;\n let timeStamp = now();\n let ageRes;\n let gearRes;\n let genderRes;\n let emotionRes;\n let mobilefacenetRes;\n let insightfaceRes;\n let antispoofRes;\n let livenessRes;\n let descRes;\n const faceRes = [];\n instance.state = \"run:face\";\n const faces = await predict4(input, instance.config);\n instance.performance.face = env.perfadd ? (instance.performance.face || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);\n if (!input.shape || input.shape.length !== 4)\n return [];\n if (!faces)\n return [];\n for (let i = 0; i < faces.length; i++) {\n instance.analyze(\"Get Face\");\n if (!faces[i].tensor || faces[i].tensor.isDisposedInternal) {\n log(\"Face object is disposed:\", faces[i].tensor);\n continue;\n }\n if ((_a2 = instance.config.face.detector) == null ? void 0 : _a2.mask) {\n const masked = await mask(faces[i]);\n Ot(faces[i].tensor);\n if (masked)\n faces[i].tensor = masked;\n }\n const rotation = faces[i].mesh && faces[i].mesh.length > 200 ? calculateFaceAngle(faces[i], [input.shape[2], input.shape[1]]) : null;\n instance.analyze(\"Start Emotion:\");\n if (instance.config.async) {\n emotionRes = ((_b2 = instance.config.face.emotion) == null ? void 0 : _b2.enabled) ? predict5(faces[i].tensor || nr([]), instance.config, i, faces.length) : [];\n } else {\n instance.state = \"run:emotion\";\n timeStamp = now();\n emotionRes = ((_c2 = instance.config.face.emotion) == null ? void 0 : _c2.enabled) ? await predict5(faces[i].tensor || nr([]), instance.config, i, faces.length) : [];\n instance.performance.emotion = env.perfadd ? (instance.performance.emotion || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);\n }\n instance.analyze(\"End Emotion:\");\n instance.analyze(\"Start AntiSpoof:\");\n if (instance.config.async) {\n antispoofRes = ((_d2 = instance.config.face.antispoof) == null ? void 0 : _d2.enabled) ? predict7(faces[i].tensor || nr([]), instance.config, i, faces.length) : 0;\n } else {\n instance.state = \"run:antispoof\";\n timeStamp = now();\n antispoofRes = ((_e = instance.config.face.antispoof) == null ? void 0 : _e.enabled) ? await predict7(faces[i].tensor || nr([]), instance.config, i, faces.length) : 0;\n instance.performance.antispoof = env.perfadd ? (instance.performance.antispoof || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);\n }\n instance.analyze(\"End AntiSpoof:\");\n instance.analyze(\"Start Liveness:\");\n if (instance.config.async) {\n livenessRes = ((_f2 = instance.config.face.liveness) == null ? void 0 : _f2.enabled) ? predict8(faces[i].tensor || nr([]), instance.config, i, faces.length) : 0;\n } else {\n instance.state = \"run:liveness\";\n timeStamp = now();\n livenessRes = ((_g2 = instance.config.face.liveness) == null ? void 0 : _g2.enabled) ? await predict8(faces[i].tensor || nr([]), instance.config, i, faces.length) : 0;\n instance.performance.liveness = env.perfadd ? (instance.performance.antispoof || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);\n }\n instance.analyze(\"End Liveness:\");\n instance.analyze(\"Start GEAR:\");\n if (instance.config.async) {\n gearRes = ((_h2 = instance.config.face.gear) == null ? void 0 : _h2.enabled) ? predict9(faces[i].tensor || nr([]), instance.config, i, faces.length) : null;\n } else {\n instance.state = \"run:gear\";\n timeStamp = now();\n gearRes = ((_i2 = instance.config.face.gear) == null ? void 0 : _i2.enabled) ? await predict9(faces[i].tensor || nr([]), instance.config, i, faces.length) : null;\n instance.performance.gear = Math.trunc(now() - timeStamp);\n }\n instance.analyze(\"End GEAR:\");\n instance.analyze(\"Start SSRNet:\");\n if (instance.config.async) {\n ageRes = ((_j2 = instance.config.face[\"ssrnet\"]) == null ? void 0 : _j2.enabled) ? predict10(faces[i].tensor || nr([]), instance.config, i, faces.length) : null;\n genderRes = ((_k = instance.config.face[\"ssrnet\"]) == null ? void 0 : _k.enabled) ? predict11(faces[i].tensor || nr([]), instance.config, i, faces.length) : null;\n } else {\n instance.state = \"run:ssrnet\";\n timeStamp = now();\n ageRes = ((_l2 = instance.config.face[\"ssrnet\"]) == null ? void 0 : _l2.enabled) ? await predict10(faces[i].tensor || nr([]), instance.config, i, faces.length) : null;\n genderRes = ((_m2 = instance.config.face[\"ssrnet\"]) == null ? void 0 : _m2.enabled) ? await predict11(faces[i].tensor || nr([]), instance.config, i, faces.length) : null;\n instance.performance.ssrnet = Math.trunc(now() - timeStamp);\n }\n instance.analyze(\"End SSRNet:\");\n instance.analyze(\"Start MobileFaceNet:\");\n if (instance.config.async) {\n mobilefacenetRes = ((_n2 = instance.config.face[\"mobilefacenet\"]) == null ? void 0 : _n2.enabled) ? predict12(faces[i].tensor || nr([]), instance.config, i, faces.length) : null;\n } else {\n instance.state = \"run:mobilefacenet\";\n timeStamp = now();\n mobilefacenetRes = ((_o2 = instance.config.face[\"mobilefacenet\"]) == null ? void 0 : _o2.enabled) ? await predict12(faces[i].tensor || nr([]), instance.config, i, faces.length) : null;\n instance.performance.mobilefacenet = Math.trunc(now() - timeStamp);\n }\n instance.analyze(\"End MobileFaceNet:\");\n instance.analyze(\"Start InsightFace:\");\n if (instance.config.async) {\n insightfaceRes = ((_p2 = instance.config.face[\"insightface\"]) == null ? void 0 : _p2.enabled) ? predict13(faces[i].tensor || nr([]), instance.config, i, faces.length) : null;\n } else {\n instance.state = \"run:mobilefacenet\";\n timeStamp = now();\n insightfaceRes = ((_q2 = instance.config.face[\"insightface\"]) == null ? void 0 : _q2.enabled) ? await predict13(faces[i].tensor || nr([]), instance.config, i, faces.length) : null;\n instance.performance.mobilefacenet = Math.trunc(now() - timeStamp);\n }\n instance.analyze(\"End InsightFace:\");\n instance.analyze(\"Start Description:\");\n if (instance.config.async) {\n descRes = predict6(faces[i].tensor || nr([]), instance.config, i, faces.length);\n } else {\n instance.state = \"run:description\";\n timeStamp = now();\n descRes = await predict6(faces[i].tensor || nr([]), instance.config, i, faces.length);\n instance.performance.description = env.perfadd ? (instance.performance.description || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);\n }\n instance.analyze(\"End Description:\");\n if (instance.config.async) {\n [ageRes, genderRes, emotionRes, mobilefacenetRes, insightfaceRes, descRes, gearRes, antispoofRes, livenessRes] = await Promise.all([ageRes, genderRes, emotionRes, mobilefacenetRes, insightfaceRes, descRes, gearRes, antispoofRes, livenessRes]);\n }\n instance.analyze(\"Finish Face:\");\n if (((_r2 = instance.config.face[\"ssrnet\"]) == null ? void 0 : _r2.enabled) && ageRes && genderRes) {\n descRes = {\n ...descRes,\n age: ageRes.age,\n gender: genderRes.gender,\n genderScore: genderRes.genderScore\n };\n }\n if (((_s2 = instance.config.face.gear) == null ? void 0 : _s2.enabled) && gearRes) {\n descRes = {\n ...descRes,\n age: gearRes.age,\n gender: gearRes.gender,\n genderScore: gearRes.genderScore,\n race: gearRes.race\n };\n }\n if (((_t = instance.config.face[\"mobilefacenet\"]) == null ? void 0 : _t.enabled) && mobilefacenetRes) {\n descRes.descriptor = mobilefacenetRes;\n }\n if (((_u2 = instance.config.face[\"insightface\"]) == null ? void 0 : _u2.enabled) && insightfaceRes) {\n descRes.descriptor = insightfaceRes;\n }\n const irisSize = ((_v2 = instance.config.face.iris) == null ? void 0 : _v2.enabled) ? calculateCameraDistance(faces[i], input.shape[2]) : 0;\n const tensor = ((_w2 = instance.config.face.detector) == null ? void 0 : _w2.return) ? Up(faces[i].tensor) : null;\n Ot(faces[i].tensor);\n if (faces[i].tensor)\n delete faces[i].tensor;\n const res = {\n ...faces[i],\n id: i\n };\n if (descRes.age)\n res.age = descRes.age;\n if (descRes.gender)\n res.gender = descRes.gender;\n if (descRes.genderScore)\n res.genderScore = descRes.genderScore;\n if (descRes.descriptor)\n res.embedding = descRes.descriptor;\n if (descRes.race)\n res.race = descRes.race;\n if (emotionRes)\n res.emotion = emotionRes;\n if (antispoofRes)\n res.real = antispoofRes;\n if (livenessRes)\n res.live = livenessRes;\n if (irisSize > 0)\n res.distance = irisSize;\n if (rotation)\n res.rotation = rotation;\n if (tensor)\n res.tensor = tensor;\n faceRes.push(res);\n instance.analyze(\"End Face\");\n }\n instance.analyze(\"End FaceMesh:\");\n if (instance.config.async) {\n if (instance.performance.face)\n delete instance.performance.face;\n if (instance.performance.age)\n delete instance.performance.age;\n if (instance.performance.gender)\n delete instance.performance.gender;\n if (instance.performance.emotion)\n delete instance.performance.emotion;\n }\n return faceRes;\n};\n\n// src/hand/fingerdef.ts\nvar Finger = {\n thumb: 0,\n index: 1,\n middle: 2,\n ring: 3,\n pinky: 4,\n all: [0, 1, 2, 3, 4],\n // just for convenience\n nameMapping: { 0: \"thumb\", 1: \"index\", 2: \"middle\", 3: \"ring\", 4: \"pinky\" },\n // Describes mapping of joints based on the 21 points returned by handpose.\n // [0] Palm\n // [1-4] Thumb\n // [5-8] Index\n // [9-12] Middle\n // [13-16] Ring\n // [17-20] Pinky\n pointsMapping: {\n 0: [[0, 1], [1, 2], [2, 3], [3, 4]],\n 1: [[0, 5], [5, 6], [6, 7], [7, 8]],\n 2: [[0, 9], [9, 10], [10, 11], [11, 12]],\n 3: [[0, 13], [13, 14], [14, 15], [15, 16]],\n 4: [[0, 17], [17, 18], [18, 19], [19, 20]]\n },\n getName: (value) => Finger.nameMapping[value],\n getPoints: (value) => Finger.pointsMapping[value]\n};\nvar FingerCurl = {\n none: 0,\n half: 1,\n full: 2,\n nameMapping: { 0: \"none\", 1: \"half\", 2: \"full\" },\n getName: (value) => FingerCurl.nameMapping[value]\n};\nvar FingerDirection = {\n verticalUp: 0,\n verticalDown: 1,\n horizontalLeft: 2,\n horizontalRight: 3,\n diagonalUpRight: 4,\n diagonalUpLeft: 5,\n diagonalDownRight: 6,\n diagonalDownLeft: 7,\n nameMapping: { 0: \"verticalUp\", 1: \"verticalDown\", 2: \"horizontalLeft\", 3: \"horizontalRight\", 4: \"diagonalUpRight\", 5: \"diagonalUpLeft\", 6: \"diagonalDownRight\", 7: \"diagonalDownLeft\" },\n getName: (value) => FingerDirection.nameMapping[value]\n};\nvar FingerGesture = class {\n constructor(name) {\n __publicField(this, \"name\");\n __publicField(this, \"curls\");\n __publicField(this, \"directions\");\n __publicField(this, \"weights\");\n __publicField(this, \"weightsRelative\");\n this.name = name;\n this.curls = {};\n this.directions = {};\n this.weights = [1, 1, 1, 1, 1];\n this.weightsRelative = [1, 1, 1, 1, 1];\n }\n curl(finger, curl, confidence) {\n if (typeof this.curls[finger] === \"undefined\")\n this.curls[finger] = [];\n this.curls[finger].push([curl, confidence]);\n }\n direction(finger, position, confidence) {\n if (!this.directions[finger])\n this.directions[finger] = [];\n this.directions[finger].push([position, confidence]);\n }\n weight(finger, weight) {\n this.weights[finger] = weight;\n const total = this.weights.reduce((a, b) => a + b, 0);\n this.weightsRelative = this.weights.map((el2) => el2 * 5 / total);\n }\n matchAgainst(detectedCurls, detectedDirections) {\n let confidence = 0;\n for (const fingerIdx in detectedCurls) {\n const detectedCurl = detectedCurls[fingerIdx];\n const expectedCurls = this.curls[fingerIdx];\n if (typeof expectedCurls === \"undefined\") {\n confidence += this.weightsRelative[fingerIdx];\n continue;\n }\n for (const [expectedCurl, score] of expectedCurls) {\n if (detectedCurl === expectedCurl) {\n confidence += score * this.weightsRelative[fingerIdx];\n break;\n }\n }\n }\n for (const fingerIdx in detectedDirections) {\n const detectedDirection = detectedDirections[fingerIdx];\n const expectedDirections = this.directions[fingerIdx];\n if (typeof expectedDirections === \"undefined\") {\n confidence += this.weightsRelative[fingerIdx];\n continue;\n }\n for (const [expectedDirection, score] of expectedDirections) {\n if (detectedDirection === expectedDirection) {\n confidence += score * this.weightsRelative[fingerIdx];\n break;\n }\n }\n }\n return confidence / 10;\n }\n};\n\n// src/hand/fingergesture.ts\nvar { thumb, index, middle, ring, pinky } = Finger;\nvar { none, half, full } = FingerCurl;\nvar { verticalUp, verticalDown, horizontalLeft, horizontalRight, diagonalUpRight, diagonalUpLeft, diagonalDownRight, diagonalDownLeft } = FingerDirection;\nvar ThumbsUp = new FingerGesture(\"thumbs up\");\nThumbsUp.curl(thumb, none, 1);\nThumbsUp.direction(thumb, verticalUp, 1);\nThumbsUp.direction(thumb, diagonalUpLeft, 0.25);\nThumbsUp.direction(thumb, diagonalUpRight, 0.25);\nfor (const finger of [Finger.index, Finger.middle, Finger.ring, Finger.pinky]) {\n ThumbsUp.curl(finger, full, 1);\n ThumbsUp.direction(finger, horizontalLeft, 1);\n ThumbsUp.direction(finger, horizontalRight, 1);\n}\nvar Victory = new FingerGesture(\"victory\");\nVictory.curl(thumb, half, 0.5);\nVictory.curl(thumb, none, 0.5);\nVictory.direction(thumb, verticalUp, 1);\nVictory.direction(thumb, diagonalUpLeft, 1);\nVictory.curl(index, none, 1);\nVictory.direction(index, verticalUp, 0.75);\nVictory.direction(index, diagonalUpLeft, 1);\nVictory.curl(middle, none, 1);\nVictory.direction(middle, verticalUp, 1);\nVictory.direction(middle, diagonalUpLeft, 0.75);\nVictory.curl(ring, full, 1);\nVictory.direction(ring, verticalUp, 0.2);\nVictory.direction(ring, diagonalUpLeft, 1);\nVictory.direction(ring, horizontalLeft, 0.2);\nVictory.curl(pinky, full, 1);\nVictory.direction(pinky, verticalUp, 0.2);\nVictory.direction(pinky, diagonalUpLeft, 1);\nVictory.direction(pinky, horizontalLeft, 0.2);\nVictory.weight(index, 2);\nVictory.weight(middle, 2);\nvar Point = new FingerGesture(\"point\");\nPoint.curl(thumb, full, 1);\nPoint.curl(index, none, 0.5);\nPoint.curl(middle, full, 0.5);\nPoint.curl(ring, full, 0.5);\nPoint.curl(pinky, full, 0.5);\nPoint.weight(index, 2);\nPoint.weight(middle, 2);\nvar MiddleFinger = new FingerGesture(\"middle finger\");\nMiddleFinger.curl(thumb, none, 1);\nMiddleFinger.curl(index, full, 0.5);\nMiddleFinger.curl(middle, full, 0.5);\nMiddleFinger.curl(ring, full, 0.5);\nMiddleFinger.curl(pinky, full, 0.5);\nMiddleFinger.weight(index, 2);\nMiddleFinger.weight(middle, 2);\nvar OpenPalm = new FingerGesture(\"open palm\");\nOpenPalm.curl(thumb, none, 0.75);\nOpenPalm.curl(index, none, 0.75);\nOpenPalm.curl(middle, none, 0.75);\nOpenPalm.curl(ring, none, 0.75);\nOpenPalm.curl(pinky, none, 0.75);\nvar fingergesture_default = [ThumbsUp, Victory, Point, MiddleFinger, OpenPalm];\n\n// src/hand/fingerpose.ts\nvar minConfidence = 0.7;\nvar options3 = {\n // curl estimation\n HALF_CURL_START_LIMIT: 60,\n NO_CURL_START_LIMIT: 130,\n // direction estimation\n DISTANCE_VOTE_POWER: 1.1,\n SINGLE_ANGLE_VOTE_POWER: 0.9,\n TOTAL_ANGLE_VOTE_POWER: 1.6\n};\nfunction calculateSlope(point1x, point1y, point2x, point2y) {\n const value = (point1y - point2y) / (point1x - point2x);\n let slope = Math.atan(value) * 180 / Math.PI;\n if (slope <= 0)\n slope = -slope;\n else if (slope > 0)\n slope = 180 - slope;\n return slope;\n}\nfunction getSlopes(point1, point2) {\n if (!point1 || !point2)\n return [0, 0];\n const slopeXY = calculateSlope(point1[0], point1[1], point2[0], point2[1]);\n if (point1.length === 2)\n return slopeXY;\n const slopeYZ = calculateSlope(point1[1], point1[2], point2[1], point2[2]);\n return [slopeXY, slopeYZ];\n}\nfunction angleOrientationAt(angle, weightageAt = 1) {\n let isVertical = 0;\n let isDiagonal = 0;\n let isHorizontal = 0;\n if (angle >= 75 && angle <= 105)\n isVertical = 1 * weightageAt;\n else if (angle >= 25 && angle <= 155)\n isDiagonal = 1 * weightageAt;\n else\n isHorizontal = 1 * weightageAt;\n return [isVertical, isDiagonal, isHorizontal];\n}\nfunction estimateFingerCurl(startPoint, midPoint, endPoint) {\n const start_mid_x_dist = startPoint[0] - midPoint[0];\n const start_end_x_dist = startPoint[0] - endPoint[0];\n const mid_end_x_dist = midPoint[0] - endPoint[0];\n const start_mid_y_dist = startPoint[1] - midPoint[1];\n const start_end_y_dist = startPoint[1] - endPoint[1];\n const mid_end_y_dist = midPoint[1] - endPoint[1];\n const start_mid_z_dist = startPoint[2] - midPoint[2];\n const start_end_z_dist = startPoint[2] - endPoint[2];\n const mid_end_z_dist = midPoint[2] - endPoint[2];\n const start_mid_dist = Math.sqrt(start_mid_x_dist * start_mid_x_dist + start_mid_y_dist * start_mid_y_dist + start_mid_z_dist * start_mid_z_dist);\n const start_end_dist = Math.sqrt(start_end_x_dist * start_end_x_dist + start_end_y_dist * start_end_y_dist + start_end_z_dist * start_end_z_dist);\n const mid_end_dist = Math.sqrt(mid_end_x_dist * mid_end_x_dist + mid_end_y_dist * mid_end_y_dist + mid_end_z_dist * mid_end_z_dist);\n let cos_in = (mid_end_dist * mid_end_dist + start_mid_dist * start_mid_dist - start_end_dist * start_end_dist) / (2 * mid_end_dist * start_mid_dist);\n if (cos_in > 1)\n cos_in = 1;\n else if (cos_in < -1)\n cos_in = -1;\n let angleOfCurve = Math.acos(cos_in);\n angleOfCurve = 57.2958 * angleOfCurve % 180;\n let fingerCurl;\n if (angleOfCurve > options3.NO_CURL_START_LIMIT)\n fingerCurl = FingerCurl.none;\n else if (angleOfCurve > options3.HALF_CURL_START_LIMIT)\n fingerCurl = FingerCurl.half;\n else\n fingerCurl = FingerCurl.full;\n return fingerCurl;\n}\nfunction estimateHorizontalDirection(start_end_x_dist, start_mid_x_dist, mid_end_x_dist, max_dist_x) {\n let estimatedDirection;\n if (max_dist_x === Math.abs(start_end_x_dist)) {\n if (start_end_x_dist > 0)\n estimatedDirection = FingerDirection.horizontalLeft;\n else\n estimatedDirection = FingerDirection.horizontalRight;\n } else if (max_dist_x === Math.abs(start_mid_x_dist)) {\n if (start_mid_x_dist > 0)\n estimatedDirection = FingerDirection.horizontalLeft;\n else\n estimatedDirection = FingerDirection.horizontalRight;\n } else {\n if (mid_end_x_dist > 0)\n estimatedDirection = FingerDirection.horizontalLeft;\n else\n estimatedDirection = FingerDirection.horizontalRight;\n }\n return estimatedDirection;\n}\nfunction estimateVerticalDirection(start_end_y_dist, start_mid_y_dist, mid_end_y_dist, max_dist_y) {\n let estimatedDirection;\n if (max_dist_y === Math.abs(start_end_y_dist)) {\n if (start_end_y_dist < 0)\n estimatedDirection = FingerDirection.verticalDown;\n else\n estimatedDirection = FingerDirection.verticalUp;\n } else if (max_dist_y === Math.abs(start_mid_y_dist)) {\n if (start_mid_y_dist < 0)\n estimatedDirection = FingerDirection.verticalDown;\n else\n estimatedDirection = FingerDirection.verticalUp;\n } else {\n if (mid_end_y_dist < 0)\n estimatedDirection = FingerDirection.verticalDown;\n else\n estimatedDirection = FingerDirection.verticalUp;\n }\n return estimatedDirection;\n}\nfunction estimateDiagonalDirection(start_end_y_dist, start_mid_y_dist, mid_end_y_dist, max_dist_y, start_end_x_dist, start_mid_x_dist, mid_end_x_dist, max_dist_x) {\n let estimatedDirection;\n const reqd_vertical_direction = estimateVerticalDirection(start_end_y_dist, start_mid_y_dist, mid_end_y_dist, max_dist_y);\n const reqd_horizontal_direction = estimateHorizontalDirection(start_end_x_dist, start_mid_x_dist, mid_end_x_dist, max_dist_x);\n if (reqd_vertical_direction === FingerDirection.verticalUp) {\n if (reqd_horizontal_direction === FingerDirection.horizontalLeft)\n estimatedDirection = FingerDirection.diagonalUpLeft;\n else\n estimatedDirection = FingerDirection.diagonalUpRight;\n } else {\n if (reqd_horizontal_direction === FingerDirection.horizontalLeft)\n estimatedDirection = FingerDirection.diagonalDownLeft;\n else\n estimatedDirection = FingerDirection.diagonalDownRight;\n }\n return estimatedDirection;\n}\nfunction calculateFingerDirection(startPoint, midPoint, endPoint, fingerSlopes) {\n const start_mid_x_dist = startPoint[0] - midPoint[0];\n const start_end_x_dist = startPoint[0] - endPoint[0];\n const mid_end_x_dist = midPoint[0] - endPoint[0];\n const start_mid_y_dist = startPoint[1] - midPoint[1];\n const start_end_y_dist = startPoint[1] - endPoint[1];\n const mid_end_y_dist = midPoint[1] - endPoint[1];\n const max_dist_x = Math.max(Math.abs(start_mid_x_dist), Math.abs(start_end_x_dist), Math.abs(mid_end_x_dist));\n const max_dist_y = Math.max(Math.abs(start_mid_y_dist), Math.abs(start_end_y_dist), Math.abs(mid_end_y_dist));\n let voteVertical = 0;\n let voteDiagonal = 0;\n let voteHorizontal = 0;\n const start_end_x_y_dist_ratio = max_dist_y / (max_dist_x + 1e-5);\n if (start_end_x_y_dist_ratio > 1.5)\n voteVertical += options3.DISTANCE_VOTE_POWER;\n else if (start_end_x_y_dist_ratio > 0.66)\n voteDiagonal += options3.DISTANCE_VOTE_POWER;\n else\n voteHorizontal += options3.DISTANCE_VOTE_POWER;\n const start_mid_dist = Math.sqrt(start_mid_x_dist * start_mid_x_dist + start_mid_y_dist * start_mid_y_dist);\n const start_end_dist = Math.sqrt(start_end_x_dist * start_end_x_dist + start_end_y_dist * start_end_y_dist);\n const mid_end_dist = Math.sqrt(mid_end_x_dist * mid_end_x_dist + mid_end_y_dist * mid_end_y_dist);\n const max_dist = Math.max(start_mid_dist, start_end_dist, mid_end_dist);\n let calc_start_point_x = startPoint[0];\n let calc_start_point_y = startPoint[1];\n let calc_end_point_x = endPoint[0];\n let calc_end_point_y = endPoint[1];\n if (max_dist === start_mid_dist) {\n calc_end_point_x = endPoint[0];\n calc_end_point_y = endPoint[1];\n } else if (max_dist === mid_end_dist) {\n calc_start_point_x = midPoint[0];\n calc_start_point_y = midPoint[1];\n }\n const calcStartPoint = [calc_start_point_x, calc_start_point_y];\n const calcEndPoint = [calc_end_point_x, calc_end_point_y];\n const totalAngle = getSlopes(calcStartPoint, calcEndPoint);\n const votes = angleOrientationAt(totalAngle, options3.TOTAL_ANGLE_VOTE_POWER);\n voteVertical += votes[0];\n voteDiagonal += votes[1];\n voteHorizontal += votes[2];\n for (const fingerSlope of fingerSlopes) {\n const fingerVotes = angleOrientationAt(fingerSlope, options3.SINGLE_ANGLE_VOTE_POWER);\n voteVertical += fingerVotes[0];\n voteDiagonal += fingerVotes[1];\n voteHorizontal += fingerVotes[2];\n }\n let estimatedDirection;\n if (voteVertical === Math.max(voteVertical, voteDiagonal, voteHorizontal)) {\n estimatedDirection = estimateVerticalDirection(start_end_y_dist, start_mid_y_dist, mid_end_y_dist, max_dist_y);\n } else if (voteHorizontal === Math.max(voteDiagonal, voteHorizontal)) {\n estimatedDirection = estimateHorizontalDirection(start_end_x_dist, start_mid_x_dist, mid_end_x_dist, max_dist_x);\n } else {\n estimatedDirection = estimateDiagonalDirection(start_end_y_dist, start_mid_y_dist, mid_end_y_dist, max_dist_y, start_end_x_dist, start_mid_x_dist, mid_end_x_dist, max_dist_x);\n }\n return estimatedDirection;\n}\nfunction estimate(landmarks) {\n const slopesXY = [];\n const slopesYZ = [];\n const fingerCurls = [];\n const fingerDirections = [];\n if (!landmarks)\n return { curls: fingerCurls, directions: fingerDirections };\n for (const finger of Finger.all) {\n const points = Finger.getPoints(finger);\n const slopeAtXY = [];\n const slopeAtYZ = [];\n for (const point2 of points) {\n const point1 = landmarks[point2[0]];\n const point22 = landmarks[point2[1]];\n const slopes = getSlopes(point1, point22);\n const slopeXY = slopes[0];\n const slopeYZ = slopes[1];\n slopeAtXY.push(slopeXY);\n slopeAtYZ.push(slopeYZ);\n }\n slopesXY.push(slopeAtXY);\n slopesYZ.push(slopeAtYZ);\n }\n for (const finger of Finger.all) {\n const pointIndexAt = finger === Finger.thumb ? 1 : 0;\n const fingerPointsAt = Finger.getPoints(finger);\n const startPoint = landmarks[fingerPointsAt[pointIndexAt][0]];\n const midPoint = landmarks[fingerPointsAt[pointIndexAt + 1][1]];\n const endPoint = landmarks[fingerPointsAt[3][1]];\n const fingerCurled = estimateFingerCurl(startPoint, midPoint, endPoint);\n const fingerPosition = calculateFingerDirection(startPoint, midPoint, endPoint, slopesXY[finger].slice(pointIndexAt));\n fingerCurls[finger] = fingerCurled;\n fingerDirections[finger] = fingerPosition;\n }\n return { curls: fingerCurls, directions: fingerDirections };\n}\nfunction analyze(keypoints) {\n if (!keypoints || keypoints.length === 0)\n return null;\n const estimatorRes = estimate(keypoints);\n const landmarks = {};\n for (const fingerIdx of Finger.all) {\n landmarks[Finger.getName(fingerIdx)] = {\n curl: FingerCurl.getName(estimatorRes.curls[fingerIdx]),\n direction: FingerDirection.getName(estimatorRes.directions[fingerIdx])\n };\n }\n return landmarks;\n}\nfunction match(keypoints) {\n const poses = [];\n if (!keypoints || keypoints.length === 0)\n return poses;\n const estimatorRes = estimate(keypoints);\n for (const gesture2 of fingergesture_default) {\n const confidence = gesture2.matchAgainst(estimatorRes.curls, estimatorRes.directions);\n if (confidence >= minConfidence)\n poses.push({ name: gesture2.name, confidence });\n }\n return poses;\n}\n\n// src/gesture/gesture.ts\nvar body2 = (res) => {\n if (!res)\n return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\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[1] < nose.position[1] && rightWrist.position[1] < nose.position[1])\n gestures.push({ body: i, gesture: \"i give up\" });\n else if (nose && leftWrist && leftWrist.position[1] < nose.position[1])\n gestures.push({ body: i, gesture: \"raise left hand\" });\n else if (nose && rightWrist && rightWrist.position[1] < nose.position[1])\n gestures.push({ body: i, gesture: \"raise right hand\" });\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 && Math.abs(leftShoulder.positionRaw[1] - rightShoulder.positionRaw[1]) > 0.1) {\n gestures.push({ body: i, gesture: `leaning ${leftShoulder.position[1] > rightShoulder.position[1] ? \"left\" : \"right\"}` });\n }\n }\n return gestures;\n};\nvar face2 = (res) => {\n if (!res)\n return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 450) {\n const zDiff = (res[i].mesh[33][2] || 0) - (res[i].mesh[263][2] || 0);\n const xDiff = res[i].mesh[33][0] - res[i].mesh[263][0];\n if (Math.abs(zDiff / xDiff) <= 0.15)\n gestures.push({ face: i, gesture: \"facing center\" });\n else\n gestures.push({ face: i, gesture: `facing ${zDiff < 0 ? \"left\" : \"right\"}` });\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]);\n if (openLeft < 0.2)\n 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]);\n if (openRight < 0.2)\n 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)\n gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2] || 0;\n if (Math.abs(chinDepth) > 10)\n gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? \"up\" : \"down\"}` });\n }\n }\n return gestures;\n};\nvar iris2 = (res) => {\n var _a2, _b2, _c2, _d2;\n if (!res)\n return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n if (!((_b2 = (_a2 = res[i].annotations) == null ? void 0 : _a2.leftEyeIris) == null ? void 0 : _b2[0]) || !((_d2 = (_c2 = res[i].annotations) == null ? void 0 : _c2.rightEyeIris) == null ? void 0 : _d2[0]))\n continue;\n const sizeXLeft = res[i].annotations.leftEyeIris[3][0] - res[i].annotations.leftEyeIris[1][0];\n const sizeYLeft = res[i].annotations.leftEyeIris[4][1] - res[i].annotations.leftEyeIris[2][1];\n const areaLeft = Math.abs(sizeXLeft * sizeYLeft);\n const sizeXRight = res[i].annotations.rightEyeIris[3][0] - res[i].annotations.rightEyeIris[1][0];\n const sizeYRight = res[i].annotations.rightEyeIris[4][1] - res[i].annotations.rightEyeIris[2][1];\n const areaRight = Math.abs(sizeXRight * sizeYRight);\n let center = false;\n const difference = Math.abs(areaLeft - areaRight) / Math.max(areaLeft, areaRight);\n if (difference < 0.25) {\n center = true;\n gestures.push({ iris: i, gesture: \"facing center\" });\n }\n const leftIrisCenterX = Math.abs(res[i].mesh[263][0] - res[i].annotations.leftEyeIris[0][0]) / res[i].box[2];\n const rightIrisCenterX = Math.abs(res[i].mesh[33][0] - res[i].annotations.rightEyeIris[0][0]) / res[i].box[2];\n if (leftIrisCenterX > 0.06 || rightIrisCenterX > 0.06)\n center = false;\n if (leftIrisCenterX > rightIrisCenterX) {\n if (leftIrisCenterX > 0.05)\n gestures.push({ iris: i, gesture: \"looking right\" });\n } else {\n if (rightIrisCenterX > 0.05)\n gestures.push({ iris: i, gesture: \"looking left\" });\n }\n const rightIrisCenterY = Math.abs(res[i].mesh[145][1] - res[i].annotations.rightEyeIris[0][1]) / res[i].box[3];\n const leftIrisCenterY = Math.abs(res[i].mesh[374][1] - res[i].annotations.leftEyeIris[0][1]) / res[i].box[3];\n if (leftIrisCenterY < 0.01 || rightIrisCenterY < 0.01 || leftIrisCenterY > 0.022 || rightIrisCenterY > 0.022)\n center = false;\n if (leftIrisCenterY < 0.01 || rightIrisCenterY < 0.01)\n gestures.push({ iris: i, gesture: \"looking down\" });\n if (leftIrisCenterY > 0.022 || rightIrisCenterY > 0.022)\n gestures.push({ iris: i, gesture: \"looking up\" });\n if (center)\n gestures.push({ iris: i, gesture: \"looking center\" });\n }\n return gestures;\n};\nvar hand2 = (res) => {\n if (!res)\n return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n const fingers = [];\n if (res[i].annotations) {\n for (const [finger, pos] of Object.entries(res[i].annotations)) {\n if (finger !== \"palmBase\" && Array.isArray(pos) && pos[0])\n fingers.push({ name: finger.toLowerCase(), position: pos[0] });\n }\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] || 0) < (a.position[2] || 0) ? best : a);\n gestures.push({ hand: i, gesture: `${closest.name} forward` });\n const highest = fingers.reduce((best, a) => best.position[1] < a.position[1] ? best : a);\n gestures.push({ hand: i, gesture: `${highest.name} up` });\n }\n if (res[i].keypoints) {\n const poses = match(res[i].keypoints);\n for (const pose of poses)\n gestures.push({ hand: i, gesture: pose.name });\n }\n }\n return gestures;\n};\n\n// src/hand/handposeutil.ts\nfunction getBoxSize2(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1])\n ];\n}\nfunction getBoxCenter2(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 eK.cropAndResize(image, boxes, [0], cropSize);\n}\nfunction scaleBoxCoordinates2(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 enlargeBox2(box, factor = 1.5) {\n const center = getBoxCenter2(box);\n const size2 = getBoxSize2(box);\n const newHalfSize = [factor * size2[0] / 2, factor * size2[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 squarifyBox2(box) {\n const centers = getBoxCenter2(box);\n const size2 = getBoxSize2(box);\n const maxEdge = Math.max(...size2);\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 normalizeRadians2(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nfunction computeRotation2(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians2(radians);\n}\nvar buildTranslationMatrix2 = (x, y6) => [[1, 0, x], [0, 1, y6], [0, 0, 1]];\nfunction dot2(v12, v22) {\n let product = 0;\n for (let i = 0; i < v12.length; i++) {\n product += v12[i] * v22[i];\n }\n return product;\n}\nfunction getColumnFrom2DArr2(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 multiplyTransformMatrices2(mat1, mat2) {\n const product = [];\n const size2 = mat1.length;\n for (let row = 0; row < size2; row++) {\n product.push([]);\n for (let col = 0; col < size2; col++) {\n product[row].push(dot2(mat1[row], getColumnFrom2DArr2(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix2(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 = buildTranslationMatrix2(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices2(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix2(-center[0], -center[1]);\n return multiplyTransformMatrices2(translationTimesRotation, negativeTranslationMatrix);\n}\nfunction invertTransformMatrix2(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 -dot2(rotationComponent[0], translationComponent),\n -dot2(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 rotatePoint2(homogeneousCoordinate, rotationMatrix) {\n return [\n dot2(homogeneousCoordinate, rotationMatrix[0]),\n dot2(homogeneousCoordinate, rotationMatrix[1])\n ];\n}\n\n// src/hand/handposeanchors.ts\nvar anchors2 = [\n { x: 0.015625, y: 0.015625 },\n { x: 0.015625, y: 0.015625 },\n { x: 0.046875, y: 0.015625 },\n { x: 0.046875, y: 0.015625 },\n { x: 0.078125, y: 0.015625 },\n { x: 0.078125, y: 0.015625 },\n { x: 0.109375, y: 0.015625 },\n { x: 0.109375, y: 0.015625 },\n { x: 0.140625, y: 0.015625 },\n { x: 0.140625, y: 0.015625 },\n { x: 0.171875, y: 0.015625 },\n { x: 0.171875, y: 0.015625 },\n { x: 0.203125, y: 0.015625 },\n { x: 0.203125, y: 0.015625 },\n { x: 0.234375, y: 0.015625 },\n { x: 0.234375, y: 0.015625 },\n { x: 0.265625, y: 0.015625 },\n { x: 0.265625, y: 0.015625 },\n { x: 0.296875, y: 0.015625 },\n { x: 0.296875, y: 0.015625 },\n { x: 0.328125, y: 0.015625 },\n { x: 0.328125, y: 0.015625 },\n { x: 0.359375, y: 0.015625 },\n { x: 0.359375, y: 0.015625 },\n { x: 0.390625, y: 0.015625 },\n { x: 0.390625, y: 0.015625 },\n { x: 0.421875, y: 0.015625 },\n { x: 0.421875, y: 0.015625 },\n { x: 0.453125, y: 0.015625 },\n { x: 0.453125, y: 0.015625 },\n { x: 0.484375, y: 0.015625 },\n { x: 0.484375, y: 0.015625 },\n { x: 0.515625, y: 0.015625 },\n { x: 0.515625, y: 0.015625 },\n { x: 0.546875, y: 0.015625 },\n { x: 0.546875, y: 0.015625 },\n { x: 0.578125, y: 0.015625 },\n { x: 0.578125, y: 0.015625 },\n { x: 0.609375, y: 0.015625 },\n { x: 0.609375, y: 0.015625 },\n { x: 0.640625, y: 0.015625 },\n { x: 0.640625, y: 0.015625 },\n { x: 0.671875, y: 0.015625 },\n { x: 0.671875, y: 0.015625 },\n { x: 0.703125, y: 0.015625 },\n { x: 0.703125, y: 0.015625 },\n { x: 0.734375, y: 0.015625 },\n { x: 0.734375, y: 0.015625 },\n { x: 0.765625, y: 0.015625 },\n { x: 0.765625, y: 0.015625 },\n { x: 0.796875, y: 0.015625 },\n { x: 0.796875, y: 0.015625 },\n { x: 0.828125, y: 0.015625 },\n { x: 0.828125, y: 0.015625 },\n { x: 0.859375, y: 0.015625 },\n { x: 0.859375, y: 0.015625 },\n { x: 0.890625, y: 0.015625 },\n { x: 0.890625, y: 0.015625 },\n { x: 0.921875, y: 0.015625 },\n { x: 0.921875, y: 0.015625 },\n { x: 0.953125, y: 0.015625 },\n { x: 0.953125, y: 0.015625 },\n { x: 0.984375, y: 0.015625 },\n { x: 0.984375, y: 0.015625 },\n { x: 0.015625, y: 0.046875 },\n { x: 0.015625, y: 0.046875 },\n { x: 0.046875, y: 0.046875 },\n { x: 0.046875, y: 0.046875 },\n { x: 0.078125, y: 0.046875 },\n { x: 0.078125, y: 0.046875 },\n { x: 0.109375, y: 0.046875 },\n { x: 0.109375, y: 0.046875 },\n { x: 0.140625, y: 0.046875 },\n { x: 0.140625, y: 0.046875 },\n { x: 0.171875, y: 0.046875 },\n { x: 0.171875, y: 0.046875 },\n { x: 0.203125, y: 0.046875 },\n { x: 0.203125, y: 0.046875 },\n { x: 0.234375, y: 0.046875 },\n { x: 0.234375, y: 0.046875 },\n { x: 0.265625, y: 0.046875 },\n { x: 0.265625, y: 0.046875 },\n { x: 0.296875, y: 0.046875 },\n { x: 0.296875, y: 0.046875 },\n { x: 0.328125, y: 0.046875 },\n { x: 0.328125, y: 0.046875 },\n { x: 0.359375, y: 0.046875 },\n { x: 0.359375, y: 0.046875 },\n { x: 0.390625, y: 0.046875 },\n { x: 0.390625, y: 0.046875 },\n { x: 0.421875, y: 0.046875 },\n { x: 0.421875, y: 0.046875 },\n { x: 0.453125, y: 0.046875 },\n { x: 0.453125, y: 0.046875 },\n { x: 0.484375, y: 0.046875 },\n { x: 0.484375, y: 0.046875 },\n { x: 0.515625, y: 0.046875 },\n { x: 0.515625, y: 0.046875 },\n { x: 0.546875, y: 0.046875 },\n { x: 0.546875, y: 0.046875 },\n { x: 0.578125, y: 0.046875 },\n { x: 0.578125, y: 0.046875 },\n { x: 0.609375, y: 0.046875 },\n { x: 0.609375, y: 0.046875 },\n { x: 0.640625, y: 0.046875 },\n { x: 0.640625, y: 0.046875 },\n { x: 0.671875, y: 0.046875 },\n { x: 0.671875, y: 0.046875 },\n { x: 0.703125, y: 0.046875 },\n { x: 0.703125, y: 0.046875 },\n { x: 0.734375, y: 0.046875 },\n { x: 0.734375, y: 0.046875 },\n { x: 0.765625, y: 0.046875 },\n { x: 0.765625, y: 0.046875 },\n { x: 0.796875, y: 0.046875 },\n { x: 0.796875, y: 0.046875 },\n { x: 0.828125, y: 0.046875 },\n { x: 0.828125, y: 0.046875 },\n { x: 0.859375, y: 0.046875 },\n { x: 0.859375, y: 0.046875 },\n { x: 0.890625, y: 0.046875 },\n { x: 0.890625, y: 0.046875 },\n { x: 0.921875, y: 0.046875 },\n { x: 0.921875, y: 0.046875 },\n { x: 0.953125, y: 0.046875 },\n { x: 0.953125, y: 0.046875 },\n { x: 0.984375, y: 0.046875 },\n { x: 0.984375, y: 0.046875 },\n { x: 0.015625, y: 0.078125 },\n { x: 0.015625, y: 0.078125 },\n { x: 0.046875, y: 0.078125 },\n { x: 0.046875, y: 0.078125 },\n { x: 0.078125, y: 0.078125 },\n { x: 0.078125, y: 0.078125 },\n { x: 0.109375, y: 0.078125 },\n { x: 0.109375, y: 0.078125 },\n { x: 0.140625, y: 0.078125 },\n { x: 0.140625, y: 0.078125 },\n { x: 0.171875, y: 0.078125 },\n { x: 0.171875, y: 0.078125 },\n { x: 0.203125, y: 0.078125 },\n { x: 0.203125, y: 0.078125 },\n { x: 0.234375, y: 0.078125 },\n { x: 0.234375, y: 0.078125 },\n { x: 0.265625, y: 0.078125 },\n { x: 0.265625, y: 0.078125 },\n { x: 0.296875, y: 0.078125 },\n { x: 0.296875, y: 0.078125 },\n { x: 0.328125, y: 0.078125 },\n { x: 0.328125, y: 0.078125 },\n { x: 0.359375, y: 0.078125 },\n { x: 0.359375, y: 0.078125 },\n { x: 0.390625, y: 0.078125 },\n { x: 0.390625, y: 0.078125 },\n { x: 0.421875, y: 0.078125 },\n { x: 0.421875, y: 0.078125 },\n { x: 0.453125, y: 0.078125 },\n { x: 0.453125, y: 0.078125 },\n { x: 0.484375, y: 0.078125 },\n { x: 0.484375, y: 0.078125 },\n { x: 0.515625, y: 0.078125 },\n { x: 0.515625, y: 0.078125 },\n { x: 0.546875, y: 0.078125 },\n { x: 0.546875, y: 0.078125 },\n { x: 0.578125, y: 0.078125 },\n { x: 0.578125, y: 0.078125 },\n { x: 0.609375, y: 0.078125 },\n { x: 0.609375, y: 0.078125 },\n { x: 0.640625, y: 0.078125 },\n { x: 0.640625, y: 0.078125 },\n { x: 0.671875, y: 0.078125 },\n { x: 0.671875, y: 0.078125 },\n { x: 0.703125, y: 0.078125 },\n { x: 0.703125, y: 0.078125 },\n { x: 0.734375, y: 0.078125 },\n { x: 0.734375, y: 0.078125 },\n { x: 0.765625, y: 0.078125 },\n { x: 0.765625, y: 0.078125 },\n { x: 0.796875, y: 0.078125 },\n { x: 0.796875, y: 0.078125 },\n { x: 0.828125, y: 0.078125 },\n { x: 0.828125, y: 0.078125 },\n { x: 0.859375, y: 0.078125 },\n { x: 0.859375, y: 0.078125 },\n { x: 0.890625, y: 0.078125 },\n { x: 0.890625, y: 0.078125 },\n { x: 0.921875, y: 0.078125 },\n { x: 0.921875, y: 0.078125 },\n { x: 0.953125, y: 0.078125 },\n { x: 0.953125, y: 0.078125 },\n { x: 0.984375, y: 0.078125 },\n { x: 0.984375, y: 0.078125 },\n { x: 0.015625, y: 0.109375 },\n { x: 0.015625, y: 0.109375 },\n { x: 0.046875, y: 0.109375 },\n { x: 0.046875, y: 0.109375 },\n { x: 0.078125, y: 0.109375 },\n { x: 0.078125, y: 0.109375 },\n { x: 0.109375, y: 0.109375 },\n { x: 0.109375, y: 0.109375 },\n { x: 0.140625, y: 0.109375 },\n { x: 0.140625, y: 0.109375 },\n { x: 0.171875, y: 0.109375 },\n { x: 0.171875, y: 0.109375 },\n { x: 0.203125, y: 0.109375 },\n { x: 0.203125, y: 0.109375 },\n { x: 0.234375, y: 0.109375 },\n { x: 0.234375, y: 0.109375 },\n { x: 0.265625, y: 0.109375 },\n { x: 0.265625, y: 0.109375 },\n { x: 0.296875, y: 0.109375 },\n { x: 0.296875, y: 0.109375 },\n { x: 0.328125, y: 0.109375 },\n { x: 0.328125, y: 0.109375 },\n { x: 0.359375, y: 0.109375 },\n { x: 0.359375, y: 0.109375 },\n { x: 0.390625, y: 0.109375 },\n { x: 0.390625, y: 0.109375 },\n { x: 0.421875, y: 0.109375 },\n { x: 0.421875, y: 0.109375 },\n { x: 0.453125, y: 0.109375 },\n { x: 0.453125, y: 0.109375 },\n { x: 0.484375, y: 0.109375 },\n { x: 0.484375, y: 0.109375 },\n { x: 0.515625, y: 0.109375 },\n { x: 0.515625, y: 0.109375 },\n { x: 0.546875, y: 0.109375 },\n { x: 0.546875, y: 0.109375 },\n { x: 0.578125, y: 0.109375 },\n { x: 0.578125, y: 0.109375 },\n { x: 0.609375, y: 0.109375 },\n { x: 0.609375, y: 0.109375 },\n { x: 0.640625, y: 0.109375 },\n { x: 0.640625, y: 0.109375 },\n { x: 0.671875, y: 0.109375 },\n { x: 0.671875, y: 0.109375 },\n { x: 0.703125, y: 0.109375 },\n { x: 0.703125, y: 0.109375 },\n { x: 0.734375, y: 0.109375 },\n { x: 0.734375, y: 0.109375 },\n { x: 0.765625, y: 0.109375 },\n { x: 0.765625, y: 0.109375 },\n { x: 0.796875, y: 0.109375 },\n { x: 0.796875, y: 0.109375 },\n { x: 0.828125, y: 0.109375 },\n { x: 0.828125, y: 0.109375 },\n { x: 0.859375, y: 0.109375 },\n { x: 0.859375, y: 0.109375 },\n { x: 0.890625, y: 0.109375 },\n { x: 0.890625, y: 0.109375 },\n { x: 0.921875, y: 0.109375 },\n { x: 0.921875, y: 0.109375 },\n { x: 0.953125, y: 0.109375 },\n { x: 0.953125, y: 0.109375 },\n { x: 0.984375, y: 0.109375 },\n { x: 0.984375, y: 0.109375 },\n { x: 0.015625, y: 0.140625 },\n { x: 0.015625, y: 0.140625 },\n { x: 0.046875, y: 0.140625 },\n { x: 0.046875, y: 0.140625 },\n { x: 0.078125, y: 0.140625 },\n { x: 0.078125, y: 0.140625 },\n { x: 0.109375, y: 0.140625 },\n { x: 0.109375, y: 0.140625 },\n { x: 0.140625, y: 0.140625 },\n { x: 0.140625, y: 0.140625 },\n { x: 0.171875, y: 0.140625 },\n { x: 0.171875, y: 0.140625 },\n { x: 0.203125, y: 0.140625 },\n { x: 0.203125, y: 0.140625 },\n { x: 0.234375, y: 0.140625 },\n { x: 0.234375, y: 0.140625 },\n { x: 0.265625, y: 0.140625 },\n { x: 0.265625, y: 0.140625 },\n { x: 0.296875, y: 0.140625 },\n { x: 0.296875, y: 0.140625 },\n { x: 0.328125, y: 0.140625 },\n { x: 0.328125, y: 0.140625 },\n { x: 0.359375, y: 0.140625 },\n { x: 0.359375, y: 0.140625 },\n { x: 0.390625, y: 0.140625 },\n { x: 0.390625, y: 0.140625 },\n { x: 0.421875, y: 0.140625 },\n { x: 0.421875, y: 0.140625 },\n { x: 0.453125, y: 0.140625 },\n { x: 0.453125, y: 0.140625 },\n { x: 0.484375, y: 0.140625 },\n { x: 0.484375, y: 0.140625 },\n { x: 0.515625, y: 0.140625 },\n { x: 0.515625, y: 0.140625 },\n { x: 0.546875, y: 0.140625 },\n { x: 0.546875, y: 0.140625 },\n { x: 0.578125, y: 0.140625 },\n { x: 0.578125, y: 0.140625 },\n { x: 0.609375, y: 0.140625 },\n { x: 0.609375, y: 0.140625 },\n { x: 0.640625, y: 0.140625 },\n { x: 0.640625, y: 0.140625 },\n { x: 0.671875, y: 0.140625 },\n { x: 0.671875, y: 0.140625 },\n { x: 0.703125, y: 0.140625 },\n { x: 0.703125, y: 0.140625 },\n { x: 0.734375, y: 0.140625 },\n { x: 0.734375, y: 0.140625 },\n { x: 0.765625, y: 0.140625 },\n { x: 0.765625, y: 0.140625 },\n { x: 0.796875, y: 0.140625 },\n { x: 0.796875, y: 0.140625 },\n { x: 0.828125, y: 0.140625 },\n { x: 0.828125, y: 0.140625 },\n { x: 0.859375, y: 0.140625 },\n { x: 0.859375, y: 0.140625 },\n { x: 0.890625, y: 0.140625 },\n { x: 0.890625, y: 0.140625 },\n { x: 0.921875, y: 0.140625 },\n { x: 0.921875, y: 0.140625 },\n { x: 0.953125, y: 0.140625 },\n { x: 0.953125, y: 0.140625 },\n { x: 0.984375, y: 0.140625 },\n { x: 0.984375, y: 0.140625 },\n { x: 0.015625, y: 0.171875 },\n { x: 0.015625, y: 0.171875 },\n { x: 0.046875, y: 0.171875 },\n { x: 0.046875, y: 0.171875 },\n { x: 0.078125, y: 0.171875 },\n { x: 0.078125, y: 0.171875 },\n { x: 0.109375, y: 0.171875 },\n { x: 0.109375, y: 0.171875 },\n { x: 0.140625, y: 0.171875 },\n { x: 0.140625, y: 0.171875 },\n { x: 0.171875, y: 0.171875 },\n { x: 0.171875, y: 0.171875 },\n { x: 0.203125, y: 0.171875 },\n { x: 0.203125, y: 0.171875 },\n { x: 0.234375, y: 0.171875 },\n { x: 0.234375, y: 0.171875 },\n { x: 0.265625, y: 0.171875 },\n { x: 0.265625, y: 0.171875 },\n { x: 0.296875, y: 0.171875 },\n { x: 0.296875, y: 0.171875 },\n { x: 0.328125, y: 0.171875 },\n { x: 0.328125, y: 0.171875 },\n { x: 0.359375, y: 0.171875 },\n { x: 0.359375, y: 0.171875 },\n { x: 0.390625, y: 0.171875 },\n { x: 0.390625, y: 0.171875 },\n { x: 0.421875, y: 0.171875 },\n { x: 0.421875, y: 0.171875 },\n { x: 0.453125, y: 0.171875 },\n { x: 0.453125, y: 0.171875 },\n { x: 0.484375, y: 0.171875 },\n { x: 0.484375, y: 0.171875 },\n { x: 0.515625, y: 0.171875 },\n { x: 0.515625, y: 0.171875 },\n { x: 0.546875, y: 0.171875 },\n { x: 0.546875, y: 0.171875 },\n { x: 0.578125, y: 0.171875 },\n { x: 0.578125, y: 0.171875 },\n { x: 0.609375, y: 0.171875 },\n { x: 0.609375, y: 0.171875 },\n { x: 0.640625, y: 0.171875 },\n { x: 0.640625, y: 0.171875 },\n { x: 0.671875, y: 0.171875 },\n { x: 0.671875, y: 0.171875 },\n { x: 0.703125, y: 0.171875 },\n { x: 0.703125, y: 0.171875 },\n { x: 0.734375, y: 0.171875 },\n { x: 0.734375, y: 0.171875 },\n { x: 0.765625, y: 0.171875 },\n { x: 0.765625, y: 0.171875 },\n { x: 0.796875, y: 0.171875 },\n { x: 0.796875, y: 0.171875 },\n { x: 0.828125, y: 0.171875 },\n { x: 0.828125, y: 0.171875 },\n { x: 0.859375, y: 0.171875 },\n { x: 0.859375, y: 0.171875 },\n { x: 0.890625, y: 0.171875 },\n { x: 0.890625, y: 0.171875 },\n { x: 0.921875, y: 0.171875 },\n { x: 0.921875, y: 0.171875 },\n { x: 0.953125, y: 0.171875 },\n { x: 0.953125, y: 0.171875 },\n { x: 0.984375, y: 0.171875 },\n { x: 0.984375, y: 0.171875 },\n { x: 0.015625, y: 0.203125 },\n { x: 0.015625, y: 0.203125 },\n { x: 0.046875, y: 0.203125 },\n { x: 0.046875, y: 0.203125 },\n { x: 0.078125, y: 0.203125 },\n { x: 0.078125, y: 0.203125 },\n { x: 0.109375, y: 0.203125 },\n { x: 0.109375, y: 0.203125 },\n { x: 0.140625, y: 0.203125 },\n { x: 0.140625, y: 0.203125 },\n { x: 0.171875, y: 0.203125 },\n { x: 0.171875, y: 0.203125 },\n { x: 0.203125, y: 0.203125 },\n { x: 0.203125, y: 0.203125 },\n { x: 0.234375, y: 0.203125 },\n { x: 0.234375, y: 0.203125 },\n { x: 0.265625, y: 0.203125 },\n { x: 0.265625, y: 0.203125 },\n { x: 0.296875, y: 0.203125 },\n { x: 0.296875, y: 0.203125 },\n { x: 0.328125, y: 0.203125 },\n { x: 0.328125, y: 0.203125 },\n { x: 0.359375, y: 0.203125 },\n { x: 0.359375, y: 0.203125 },\n { x: 0.390625, y: 0.203125 },\n { x: 0.390625, y: 0.203125 },\n { x: 0.421875, y: 0.203125 },\n { x: 0.421875, y: 0.203125 },\n { x: 0.453125, y: 0.203125 },\n { x: 0.453125, y: 0.203125 },\n { x: 0.484375, y: 0.203125 },\n { x: 0.484375, y: 0.203125 },\n { x: 0.515625, y: 0.203125 },\n { x: 0.515625, y: 0.203125 },\n { x: 0.546875, y: 0.203125 },\n { x: 0.546875, y: 0.203125 },\n { x: 0.578125, y: 0.203125 },\n { x: 0.578125, y: 0.203125 },\n { x: 0.609375, y: 0.203125 },\n { x: 0.609375, y: 0.203125 },\n { x: 0.640625, y: 0.203125 },\n { x: 0.640625, y: 0.203125 },\n { x: 0.671875, y: 0.203125 },\n { x: 0.671875, y: 0.203125 },\n { x: 0.703125, y: 0.203125 },\n { x: 0.703125, y: 0.203125 },\n { x: 0.734375, y: 0.203125 },\n { x: 0.734375, y: 0.203125 },\n { x: 0.765625, y: 0.203125 },\n { x: 0.765625, y: 0.203125 },\n { x: 0.796875, y: 0.203125 },\n { x: 0.796875, y: 0.203125 },\n { x: 0.828125, y: 0.203125 },\n { x: 0.828125, y: 0.203125 },\n { x: 0.859375, y: 0.203125 },\n { x: 0.859375, y: 0.203125 },\n { x: 0.890625, y: 0.203125 },\n { x: 0.890625, y: 0.203125 },\n { x: 0.921875, y: 0.203125 },\n { x: 0.921875, y: 0.203125 },\n { x: 0.953125, y: 0.203125 },\n { x: 0.953125, y: 0.203125 },\n { x: 0.984375, y: 0.203125 },\n { x: 0.984375, y: 0.203125 },\n { x: 0.015625, y: 0.234375 },\n { x: 0.015625, y: 0.234375 },\n { x: 0.046875, y: 0.234375 },\n { x: 0.046875, y: 0.234375 },\n { x: 0.078125, y: 0.234375 },\n { x: 0.078125, y: 0.234375 },\n { x: 0.109375, y: 0.234375 },\n { x: 0.109375, y: 0.234375 },\n { x: 0.140625, y: 0.234375 },\n { x: 0.140625, y: 0.234375 },\n { x: 0.171875, y: 0.234375 },\n { x: 0.171875, y: 0.234375 },\n { x: 0.203125, y: 0.234375 },\n { x: 0.203125, y: 0.234375 },\n { x: 0.234375, y: 0.234375 },\n { x: 0.234375, y: 0.234375 },\n { x: 0.265625, y: 0.234375 },\n { x: 0.265625, y: 0.234375 },\n { x: 0.296875, y: 0.234375 },\n { x: 0.296875, y: 0.234375 },\n { x: 0.328125, y: 0.234375 },\n { x: 0.328125, y: 0.234375 },\n { x: 0.359375, y: 0.234375 },\n { x: 0.359375, y: 0.234375 },\n { x: 0.390625, y: 0.234375 },\n { x: 0.390625, y: 0.234375 },\n { x: 0.421875, y: 0.234375 },\n { x: 0.421875, y: 0.234375 },\n { x: 0.453125, y: 0.234375 },\n { x: 0.453125, y: 0.234375 },\n { x: 0.484375, y: 0.234375 },\n { x: 0.484375, y: 0.234375 },\n { x: 0.515625, y: 0.234375 },\n { x: 0.515625, y: 0.234375 },\n { x: 0.546875, y: 0.234375 },\n { x: 0.546875, y: 0.234375 },\n { x: 0.578125, y: 0.234375 },\n { x: 0.578125, y: 0.234375 },\n { x: 0.609375, y: 0.234375 },\n { x: 0.609375, y: 0.234375 },\n { x: 0.640625, y: 0.234375 },\n { x: 0.640625, y: 0.234375 },\n { x: 0.671875, y: 0.234375 },\n { x: 0.671875, y: 0.234375 },\n { x: 0.703125, y: 0.234375 },\n { x: 0.703125, y: 0.234375 },\n { x: 0.734375, y: 0.234375 },\n { x: 0.734375, y: 0.234375 },\n { x: 0.765625, y: 0.234375 },\n { x: 0.765625, y: 0.234375 },\n { x: 0.796875, y: 0.234375 },\n { x: 0.796875, y: 0.234375 },\n { x: 0.828125, y: 0.234375 },\n { x: 0.828125, y: 0.234375 },\n { x: 0.859375, y: 0.234375 },\n { x: 0.859375, y: 0.234375 },\n { x: 0.890625, y: 0.234375 },\n { x: 0.890625, y: 0.234375 },\n { x: 0.921875, y: 0.234375 },\n { x: 0.921875, y: 0.234375 },\n { x: 0.953125, y: 0.234375 },\n { x: 0.953125, y: 0.234375 },\n { x: 0.984375, y: 0.234375 },\n { x: 0.984375, y: 0.234375 },\n { x: 0.015625, y: 0.265625 },\n { x: 0.015625, y: 0.265625 },\n { x: 0.046875, y: 0.265625 },\n { x: 0.046875, y: 0.265625 },\n { x: 0.078125, y: 0.265625 },\n { x: 0.078125, y: 0.265625 },\n { x: 0.109375, y: 0.265625 },\n { x: 0.109375, y: 0.265625 },\n { x: 0.140625, y: 0.265625 },\n { x: 0.140625, y: 0.265625 },\n { x: 0.171875, y: 0.265625 },\n { x: 0.171875, y: 0.265625 },\n { x: 0.203125, y: 0.265625 },\n { x: 0.203125, y: 0.265625 },\n { x: 0.234375, y: 0.265625 },\n { x: 0.234375, y: 0.265625 },\n { x: 0.265625, y: 0.265625 },\n { x: 0.265625, y: 0.265625 },\n { x: 0.296875, y: 0.265625 },\n { x: 0.296875, y: 0.265625 },\n { x: 0.328125, y: 0.265625 },\n { x: 0.328125, y: 0.265625 },\n { x: 0.359375, y: 0.265625 },\n { x: 0.359375, y: 0.265625 },\n { x: 0.390625, y: 0.265625 },\n { x: 0.390625, y: 0.265625 },\n { x: 0.421875, y: 0.265625 },\n { x: 0.421875, y: 0.265625 },\n { x: 0.453125, y: 0.265625 },\n { x: 0.453125, y: 0.265625 },\n { x: 0.484375, y: 0.265625 },\n { x: 0.484375, y: 0.265625 },\n { x: 0.515625, y: 0.265625 },\n { x: 0.515625, y: 0.265625 },\n { x: 0.546875, y: 0.265625 },\n { x: 0.546875, y: 0.265625 },\n { x: 0.578125, y: 0.265625 },\n { x: 0.578125, y: 0.265625 },\n { x: 0.609375, y: 0.265625 },\n { x: 0.609375, y: 0.265625 },\n { x: 0.640625, y: 0.265625 },\n { x: 0.640625, y: 0.265625 },\n { x: 0.671875, y: 0.265625 },\n { x: 0.671875, y: 0.265625 },\n { x: 0.703125, y: 0.265625 },\n { x: 0.703125, y: 0.265625 },\n { x: 0.734375, y: 0.265625 },\n { x: 0.734375, y: 0.265625 },\n { x: 0.765625, y: 0.265625 },\n { x: 0.765625, y: 0.265625 },\n { x: 0.796875, y: 0.265625 },\n { x: 0.796875, y: 0.265625 },\n { x: 0.828125, y: 0.265625 },\n { x: 0.828125, y: 0.265625 },\n { x: 0.859375, y: 0.265625 },\n { x: 0.859375, y: 0.265625 },\n { x: 0.890625, y: 0.265625 },\n { x: 0.890625, y: 0.265625 },\n { x: 0.921875, y: 0.265625 },\n { x: 0.921875, y: 0.265625 },\n { x: 0.953125, y: 0.265625 },\n { x: 0.953125, y: 0.265625 },\n { x: 0.984375, y: 0.265625 },\n { x: 0.984375, y: 0.265625 },\n { x: 0.015625, y: 0.296875 },\n { x: 0.015625, y: 0.296875 },\n { x: 0.046875, y: 0.296875 },\n { x: 0.046875, y: 0.296875 },\n { x: 0.078125, y: 0.296875 },\n { x: 0.078125, y: 0.296875 },\n { x: 0.109375, y: 0.296875 },\n { x: 0.109375, y: 0.296875 },\n { x: 0.140625, y: 0.296875 },\n { x: 0.140625, y: 0.296875 },\n { x: 0.171875, y: 0.296875 },\n { x: 0.171875, y: 0.296875 },\n { x: 0.203125, y: 0.296875 },\n { x: 0.203125, y: 0.296875 },\n { x: 0.234375, y: 0.296875 },\n { x: 0.234375, y: 0.296875 },\n { x: 0.265625, y: 0.296875 },\n { x: 0.265625, y: 0.296875 },\n { x: 0.296875, y: 0.296875 },\n { x: 0.296875, y: 0.296875 },\n { x: 0.328125, y: 0.296875 },\n { x: 0.328125, y: 0.296875 },\n { x: 0.359375, y: 0.296875 },\n { x: 0.359375, y: 0.296875 },\n { x: 0.390625, y: 0.296875 },\n { x: 0.390625, y: 0.296875 },\n { x: 0.421875, y: 0.296875 },\n { x: 0.421875, y: 0.296875 },\n { x: 0.453125, y: 0.296875 },\n { x: 0.453125, y: 0.296875 },\n { x: 0.484375, y: 0.296875 },\n { x: 0.484375, y: 0.296875 },\n { x: 0.515625, y: 0.296875 },\n { x: 0.515625, y: 0.296875 },\n { x: 0.546875, y: 0.296875 },\n { x: 0.546875, y: 0.296875 },\n { x: 0.578125, y: 0.296875 },\n { x: 0.578125, y: 0.296875 },\n { x: 0.609375, y: 0.296875 },\n { x: 0.609375, y: 0.296875 },\n { x: 0.640625, y: 0.296875 },\n { x: 0.640625, y: 0.296875 },\n { x: 0.671875, y: 0.296875 },\n { x: 0.671875, y: 0.296875 },\n { x: 0.703125, y: 0.296875 },\n { x: 0.703125, y: 0.296875 },\n { x: 0.734375, y: 0.296875 },\n { x: 0.734375, y: 0.296875 },\n { x: 0.765625, y: 0.296875 },\n { x: 0.765625, y: 0.296875 },\n { x: 0.796875, y: 0.296875 },\n { x: 0.796875, y: 0.296875 },\n { x: 0.828125, y: 0.296875 },\n { x: 0.828125, y: 0.296875 },\n { x: 0.859375, y: 0.296875 },\n { x: 0.859375, y: 0.296875 },\n { x: 0.890625, y: 0.296875 },\n { x: 0.890625, y: 0.296875 },\n { x: 0.921875, y: 0.296875 },\n { x: 0.921875, y: 0.296875 },\n { x: 0.953125, y: 0.296875 },\n { x: 0.953125, y: 0.296875 },\n { x: 0.984375, y: 0.296875 },\n { x: 0.984375, y: 0.296875 },\n { x: 0.015625, y: 0.328125 },\n { x: 0.015625, y: 0.328125 },\n { x: 0.046875, y: 0.328125 },\n { x: 0.046875, y: 0.328125 },\n { x: 0.078125, y: 0.328125 },\n { x: 0.078125, y: 0.328125 },\n { x: 0.109375, y: 0.328125 },\n { x: 0.109375, y: 0.328125 },\n { x: 0.140625, y: 0.328125 },\n { x: 0.140625, y: 0.328125 },\n { x: 0.171875, y: 0.328125 },\n { x: 0.171875, y: 0.328125 },\n { x: 0.203125, y: 0.328125 },\n { x: 0.203125, y: 0.328125 },\n { x: 0.234375, y: 0.328125 },\n { x: 0.234375, y: 0.328125 },\n { x: 0.265625, y: 0.328125 },\n { x: 0.265625, y: 0.328125 },\n { x: 0.296875, y: 0.328125 },\n { x: 0.296875, y: 0.328125 },\n { x: 0.328125, y: 0.328125 },\n { x: 0.328125, y: 0.328125 },\n { x: 0.359375, y: 0.328125 },\n { x: 0.359375, y: 0.328125 },\n { x: 0.390625, y: 0.328125 },\n { x: 0.390625, y: 0.328125 },\n { x: 0.421875, y: 0.328125 },\n { x: 0.421875, y: 0.328125 },\n { x: 0.453125, y: 0.328125 },\n { x: 0.453125, y: 0.328125 },\n { x: 0.484375, y: 0.328125 },\n { x: 0.484375, y: 0.328125 },\n { x: 0.515625, y: 0.328125 },\n { x: 0.515625, y: 0.328125 },\n { x: 0.546875, y: 0.328125 },\n { x: 0.546875, y: 0.328125 },\n { x: 0.578125, y: 0.328125 },\n { x: 0.578125, y: 0.328125 },\n { x: 0.609375, y: 0.328125 },\n { x: 0.609375, y: 0.328125 },\n { x: 0.640625, y: 0.328125 },\n { x: 0.640625, y: 0.328125 },\n { x: 0.671875, y: 0.328125 },\n { x: 0.671875, y: 0.328125 },\n { x: 0.703125, y: 0.328125 },\n { x: 0.703125, y: 0.328125 },\n { x: 0.734375, y: 0.328125 },\n { x: 0.734375, y: 0.328125 },\n { x: 0.765625, y: 0.328125 },\n { x: 0.765625, y: 0.328125 },\n { x: 0.796875, y: 0.328125 },\n { x: 0.796875, y: 0.328125 },\n { x: 0.828125, y: 0.328125 },\n { x: 0.828125, y: 0.328125 },\n { x: 0.859375, y: 0.328125 },\n { x: 0.859375, y: 0.328125 },\n { x: 0.890625, y: 0.328125 },\n { x: 0.890625, y: 0.328125 },\n { x: 0.921875, y: 0.328125 },\n { x: 0.921875, y: 0.328125 },\n { x: 0.953125, y: 0.328125 },\n { x: 0.953125, y: 0.328125 },\n { x: 0.984375, y: 0.328125 },\n { x: 0.984375, y: 0.328125 },\n { x: 0.015625, y: 0.359375 },\n { x: 0.015625, y: 0.359375 },\n { x: 0.046875, y: 0.359375 },\n { x: 0.046875, y: 0.359375 },\n { x: 0.078125, y: 0.359375 },\n { x: 0.078125, y: 0.359375 },\n { x: 0.109375, y: 0.359375 },\n { x: 0.109375, y: 0.359375 },\n { x: 0.140625, y: 0.359375 },\n { x: 0.140625, y: 0.359375 },\n { x: 0.171875, y: 0.359375 },\n { x: 0.171875, y: 0.359375 },\n { x: 0.203125, y: 0.359375 },\n { x: 0.203125, y: 0.359375 },\n { x: 0.234375, y: 0.359375 },\n { x: 0.234375, y: 0.359375 },\n { x: 0.265625, y: 0.359375 },\n { x: 0.265625, y: 0.359375 },\n { x: 0.296875, y: 0.359375 },\n { x: 0.296875, y: 0.359375 },\n { x: 0.328125, y: 0.359375 },\n { x: 0.328125, y: 0.359375 },\n { x: 0.359375, y: 0.359375 },\n { x: 0.359375, y: 0.359375 },\n { x: 0.390625, y: 0.359375 },\n { x: 0.390625, y: 0.359375 },\n { x: 0.421875, y: 0.359375 },\n { x: 0.421875, y: 0.359375 },\n { x: 0.453125, y: 0.359375 },\n { x: 0.453125, y: 0.359375 },\n { x: 0.484375, y: 0.359375 },\n { x: 0.484375, y: 0.359375 },\n { x: 0.515625, y: 0.359375 },\n { x: 0.515625, y: 0.359375 },\n { x: 0.546875, y: 0.359375 },\n { x: 0.546875, y: 0.359375 },\n { x: 0.578125, y: 0.359375 },\n { x: 0.578125, y: 0.359375 },\n { x: 0.609375, y: 0.359375 },\n { x: 0.609375, y: 0.359375 },\n { x: 0.640625, y: 0.359375 },\n { x: 0.640625, y: 0.359375 },\n { x: 0.671875, y: 0.359375 },\n { x: 0.671875, y: 0.359375 },\n { x: 0.703125, y: 0.359375 },\n { x: 0.703125, y: 0.359375 },\n { x: 0.734375, y: 0.359375 },\n { x: 0.734375, y: 0.359375 },\n { x: 0.765625, y: 0.359375 },\n { x: 0.765625, y: 0.359375 },\n { x: 0.796875, y: 0.359375 },\n { x: 0.796875, y: 0.359375 },\n { x: 0.828125, y: 0.359375 },\n { x: 0.828125, y: 0.359375 },\n { x: 0.859375, y: 0.359375 },\n { x: 0.859375, y: 0.359375 },\n { x: 0.890625, y: 0.359375 },\n { x: 0.890625, y: 0.359375 },\n { x: 0.921875, y: 0.359375 },\n { x: 0.921875, y: 0.359375 },\n { x: 0.953125, y: 0.359375 },\n { x: 0.953125, y: 0.359375 },\n { x: 0.984375, y: 0.359375 },\n { x: 0.984375, y: 0.359375 },\n { x: 0.015625, y: 0.390625 },\n { x: 0.015625, y: 0.390625 },\n { x: 0.046875, y: 0.390625 },\n { x: 0.046875, y: 0.390625 },\n { x: 0.078125, y: 0.390625 },\n { x: 0.078125, y: 0.390625 },\n { x: 0.109375, y: 0.390625 },\n { x: 0.109375, y: 0.390625 },\n { x: 0.140625, y: 0.390625 },\n { x: 0.140625, y: 0.390625 },\n { x: 0.171875, y: 0.390625 },\n { x: 0.171875, y: 0.390625 },\n { x: 0.203125, y: 0.390625 },\n { x: 0.203125, y: 0.390625 },\n { x: 0.234375, y: 0.390625 },\n { x: 0.234375, y: 0.390625 },\n { x: 0.265625, y: 0.390625 },\n { x: 0.265625, y: 0.390625 },\n { x: 0.296875, y: 0.390625 },\n { x: 0.296875, y: 0.390625 },\n { x: 0.328125, y: 0.390625 },\n { x: 0.328125, y: 0.390625 },\n { x: 0.359375, y: 0.390625 },\n { x: 0.359375, y: 0.390625 },\n { x: 0.390625, y: 0.390625 },\n { x: 0.390625, y: 0.390625 },\n { x: 0.421875, y: 0.390625 },\n { x: 0.421875, y: 0.390625 },\n { x: 0.453125, y: 0.390625 },\n { x: 0.453125, y: 0.390625 },\n { x: 0.484375, y: 0.390625 },\n { x: 0.484375, y: 0.390625 },\n { x: 0.515625, y: 0.390625 },\n { x: 0.515625, y: 0.390625 },\n { x: 0.546875, y: 0.390625 },\n { x: 0.546875, y: 0.390625 },\n { x: 0.578125, y: 0.390625 },\n { x: 0.578125, y: 0.390625 },\n { x: 0.609375, y: 0.390625 },\n { x: 0.609375, y: 0.390625 },\n { x: 0.640625, y: 0.390625 },\n { x: 0.640625, y: 0.390625 },\n { x: 0.671875, y: 0.390625 },\n { x: 0.671875, y: 0.390625 },\n { x: 0.703125, y: 0.390625 },\n { x: 0.703125, y: 0.390625 },\n { x: 0.734375, y: 0.390625 },\n { x: 0.734375, y: 0.390625 },\n { x: 0.765625, y: 0.390625 },\n { x: 0.765625, y: 0.390625 },\n { x: 0.796875, y: 0.390625 },\n { x: 0.796875, y: 0.390625 },\n { x: 0.828125, y: 0.390625 },\n { x: 0.828125, y: 0.390625 },\n { x: 0.859375, y: 0.390625 },\n { x: 0.859375, y: 0.390625 },\n { x: 0.890625, y: 0.390625 },\n { x: 0.890625, y: 0.390625 },\n { x: 0.921875, y: 0.390625 },\n { x: 0.921875, y: 0.390625 },\n { x: 0.953125, y: 0.390625 },\n { x: 0.953125, y: 0.390625 },\n { x: 0.984375, y: 0.390625 },\n { x: 0.984375, y: 0.390625 },\n { x: 0.015625, y: 0.421875 },\n { x: 0.015625, y: 0.421875 },\n { x: 0.046875, y: 0.421875 },\n { x: 0.046875, y: 0.421875 },\n { x: 0.078125, y: 0.421875 },\n { x: 0.078125, y: 0.421875 },\n { x: 0.109375, y: 0.421875 },\n { x: 0.109375, y: 0.421875 },\n { x: 0.140625, y: 0.421875 },\n { x: 0.140625, y: 0.421875 },\n { x: 0.171875, y: 0.421875 },\n { x: 0.171875, y: 0.421875 },\n { x: 0.203125, y: 0.421875 },\n { x: 0.203125, y: 0.421875 },\n { x: 0.234375, y: 0.421875 },\n { x: 0.234375, y: 0.421875 },\n { x: 0.265625, y: 0.421875 },\n { x: 0.265625, y: 0.421875 },\n { x: 0.296875, y: 0.421875 },\n { x: 0.296875, y: 0.421875 },\n { x: 0.328125, y: 0.421875 },\n { x: 0.328125, y: 0.421875 },\n { x: 0.359375, y: 0.421875 },\n { x: 0.359375, y: 0.421875 },\n { x: 0.390625, y: 0.421875 },\n { x: 0.390625, y: 0.421875 },\n { x: 0.421875, y: 0.421875 },\n { x: 0.421875, y: 0.421875 },\n { x: 0.453125, y: 0.421875 },\n { x: 0.453125, y: 0.421875 },\n { x: 0.484375, y: 0.421875 },\n { x: 0.484375, y: 0.421875 },\n { x: 0.515625, y: 0.421875 },\n { x: 0.515625, y: 0.421875 },\n { x: 0.546875, y: 0.421875 },\n { x: 0.546875, y: 0.421875 },\n { x: 0.578125, y: 0.421875 },\n { x: 0.578125, y: 0.421875 },\n { x: 0.609375, y: 0.421875 },\n { x: 0.609375, y: 0.421875 },\n { x: 0.640625, y: 0.421875 },\n { x: 0.640625, y: 0.421875 },\n { x: 0.671875, y: 0.421875 },\n { x: 0.671875, y: 0.421875 },\n { x: 0.703125, y: 0.421875 },\n { x: 0.703125, y: 0.421875 },\n { x: 0.734375, y: 0.421875 },\n { x: 0.734375, y: 0.421875 },\n { x: 0.765625, y: 0.421875 },\n { x: 0.765625, y: 0.421875 },\n { x: 0.796875, y: 0.421875 },\n { x: 0.796875, y: 0.421875 },\n { x: 0.828125, y: 0.421875 },\n { x: 0.828125, y: 0.421875 },\n { x: 0.859375, y: 0.421875 },\n { x: 0.859375, y: 0.421875 },\n { x: 0.890625, y: 0.421875 },\n { x: 0.890625, y: 0.421875 },\n { x: 0.921875, y: 0.421875 },\n { x: 0.921875, y: 0.421875 },\n { x: 0.953125, y: 0.421875 },\n { x: 0.953125, y: 0.421875 },\n { x: 0.984375, y: 0.421875 },\n { x: 0.984375, y: 0.421875 },\n { x: 0.015625, y: 0.453125 },\n { x: 0.015625, y: 0.453125 },\n { x: 0.046875, y: 0.453125 },\n { x: 0.046875, y: 0.453125 },\n { x: 0.078125, y: 0.453125 },\n { x: 0.078125, y: 0.453125 },\n { x: 0.109375, y: 0.453125 },\n { x: 0.109375, y: 0.453125 },\n { x: 0.140625, y: 0.453125 },\n { x: 0.140625, y: 0.453125 },\n { x: 0.171875, y: 0.453125 },\n { x: 0.171875, y: 0.453125 },\n { x: 0.203125, y: 0.453125 },\n { x: 0.203125, y: 0.453125 },\n { x: 0.234375, y: 0.453125 },\n { x: 0.234375, y: 0.453125 },\n { x: 0.265625, y: 0.453125 },\n { x: 0.265625, y: 0.453125 },\n { x: 0.296875, y: 0.453125 },\n { x: 0.296875, y: 0.453125 },\n { x: 0.328125, y: 0.453125 },\n { x: 0.328125, y: 0.453125 },\n { x: 0.359375, y: 0.453125 },\n { x: 0.359375, y: 0.453125 },\n { x: 0.390625, y: 0.453125 },\n { x: 0.390625, y: 0.453125 },\n { x: 0.421875, y: 0.453125 },\n { x: 0.421875, y: 0.453125 },\n { x: 0.453125, y: 0.453125 },\n { x: 0.453125, y: 0.453125 },\n { x: 0.484375, y: 0.453125 },\n { x: 0.484375, y: 0.453125 },\n { x: 0.515625, y: 0.453125 },\n { x: 0.515625, y: 0.453125 },\n { x: 0.546875, y: 0.453125 },\n { x: 0.546875, y: 0.453125 },\n { x: 0.578125, y: 0.453125 },\n { x: 0.578125, y: 0.453125 },\n { x: 0.609375, y: 0.453125 },\n { x: 0.609375, y: 0.453125 },\n { x: 0.640625, y: 0.453125 },\n { x: 0.640625, y: 0.453125 },\n { x: 0.671875, y: 0.453125 },\n { x: 0.671875, y: 0.453125 },\n { x: 0.703125, y: 0.453125 },\n { x: 0.703125, y: 0.453125 },\n { x: 0.734375, y: 0.453125 },\n { x: 0.734375, y: 0.453125 },\n { x: 0.765625, y: 0.453125 },\n { x: 0.765625, y: 0.453125 },\n { x: 0.796875, y: 0.453125 },\n { x: 0.796875, y: 0.453125 },\n { x: 0.828125, y: 0.453125 },\n { x: 0.828125, y: 0.453125 },\n { x: 0.859375, y: 0.453125 },\n { x: 0.859375, y: 0.453125 },\n { x: 0.890625, y: 0.453125 },\n { x: 0.890625, y: 0.453125 },\n { x: 0.921875, y: 0.453125 },\n { x: 0.921875, y: 0.453125 },\n { x: 0.953125, y: 0.453125 },\n { x: 0.953125, y: 0.453125 },\n { x: 0.984375, y: 0.453125 },\n { x: 0.984375, y: 0.453125 },\n { x: 0.015625, y: 0.484375 },\n { x: 0.015625, y: 0.484375 },\n { x: 0.046875, y: 0.484375 },\n { x: 0.046875, y: 0.484375 },\n { x: 0.078125, y: 0.484375 },\n { x: 0.078125, y: 0.484375 },\n { x: 0.109375, y: 0.484375 },\n { x: 0.109375, y: 0.484375 },\n { x: 0.140625, y: 0.484375 },\n { x: 0.140625, y: 0.484375 },\n { x: 0.171875, y: 0.484375 },\n { x: 0.171875, y: 0.484375 },\n { x: 0.203125, y: 0.484375 },\n { x: 0.203125, y: 0.484375 },\n { x: 0.234375, y: 0.484375 },\n { x: 0.234375, y: 0.484375 },\n { x: 0.265625, y: 0.484375 },\n { x: 0.265625, y: 0.484375 },\n { x: 0.296875, y: 0.484375 },\n { x: 0.296875, y: 0.484375 },\n { x: 0.328125, y: 0.484375 },\n { x: 0.328125, y: 0.484375 },\n { x: 0.359375, y: 0.484375 },\n { x: 0.359375, y: 0.484375 },\n { x: 0.390625, y: 0.484375 },\n { x: 0.390625, y: 0.484375 },\n { x: 0.421875, y: 0.484375 },\n { x: 0.421875, y: 0.484375 },\n { x: 0.453125, y: 0.484375 },\n { x: 0.453125, y: 0.484375 },\n { x: 0.484375, y: 0.484375 },\n { x: 0.484375, y: 0.484375 },\n { x: 0.515625, y: 0.484375 },\n { x: 0.515625, y: 0.484375 },\n { x: 0.546875, y: 0.484375 },\n { x: 0.546875, y: 0.484375 },\n { x: 0.578125, y: 0.484375 },\n { x: 0.578125, y: 0.484375 },\n { x: 0.609375, y: 0.484375 },\n { x: 0.609375, y: 0.484375 },\n { x: 0.640625, y: 0.484375 },\n { x: 0.640625, y: 0.484375 },\n { x: 0.671875, y: 0.484375 },\n { x: 0.671875, y: 0.484375 },\n { x: 0.703125, y: 0.484375 },\n { x: 0.703125, y: 0.484375 },\n { x: 0.734375, y: 0.484375 },\n { x: 0.734375, y: 0.484375 },\n { x: 0.765625, y: 0.484375 },\n { x: 0.765625, y: 0.484375 },\n { x: 0.796875, y: 0.484375 },\n { x: 0.796875, y: 0.484375 },\n { x: 0.828125, y: 0.484375 },\n { x: 0.828125, y: 0.484375 },\n { x: 0.859375, y: 0.484375 },\n { x: 0.859375, y: 0.484375 },\n { x: 0.890625, y: 0.484375 },\n { x: 0.890625, y: 0.484375 },\n { x: 0.921875, y: 0.484375 },\n { x: 0.921875, y: 0.484375 },\n { x: 0.953125, y: 0.484375 },\n { x: 0.953125, y: 0.484375 },\n { x: 0.984375, y: 0.484375 },\n { x: 0.984375, y: 0.484375 },\n { x: 0.015625, y: 0.515625 },\n { x: 0.015625, y: 0.515625 },\n { x: 0.046875, y: 0.515625 },\n { x: 0.046875, y: 0.515625 },\n { x: 0.078125, y: 0.515625 },\n { x: 0.078125, y: 0.515625 },\n { x: 0.109375, y: 0.515625 },\n { x: 0.109375, y: 0.515625 },\n { x: 0.140625, y: 0.515625 },\n { x: 0.140625, y: 0.515625 },\n { x: 0.171875, y: 0.515625 },\n { x: 0.171875, y: 0.515625 },\n { x: 0.203125, y: 0.515625 },\n { x: 0.203125, y: 0.515625 },\n { x: 0.234375, y: 0.515625 },\n { x: 0.234375, y: 0.515625 },\n { x: 0.265625, y: 0.515625 },\n { x: 0.265625, y: 0.515625 },\n { x: 0.296875, y: 0.515625 },\n { x: 0.296875, y: 0.515625 },\n { x: 0.328125, y: 0.515625 },\n { x: 0.328125, y: 0.515625 },\n { x: 0.359375, y: 0.515625 },\n { x: 0.359375, y: 0.515625 },\n { x: 0.390625, y: 0.515625 },\n { x: 0.390625, y: 0.515625 },\n { x: 0.421875, y: 0.515625 },\n { x: 0.421875, y: 0.515625 },\n { x: 0.453125, y: 0.515625 },\n { x: 0.453125, y: 0.515625 },\n { x: 0.484375, y: 0.515625 },\n { x: 0.484375, y: 0.515625 },\n { x: 0.515625, y: 0.515625 },\n { x: 0.515625, y: 0.515625 },\n { x: 0.546875, y: 0.515625 },\n { x: 0.546875, y: 0.515625 },\n { x: 0.578125, y: 0.515625 },\n { x: 0.578125, y: 0.515625 },\n { x: 0.609375, y: 0.515625 },\n { x: 0.609375, y: 0.515625 },\n { x: 0.640625, y: 0.515625 },\n { x: 0.640625, y: 0.515625 },\n { x: 0.671875, y: 0.515625 },\n { x: 0.671875, y: 0.515625 },\n { x: 0.703125, y: 0.515625 },\n { x: 0.703125, y: 0.515625 },\n { x: 0.734375, y: 0.515625 },\n { x: 0.734375, y: 0.515625 },\n { x: 0.765625, y: 0.515625 },\n { x: 0.765625, y: 0.515625 },\n { x: 0.796875, y: 0.515625 },\n { x: 0.796875, y: 0.515625 },\n { x: 0.828125, y: 0.515625 },\n { x: 0.828125, y: 0.515625 },\n { x: 0.859375, y: 0.515625 },\n { x: 0.859375, y: 0.515625 },\n { x: 0.890625, y: 0.515625 },\n { x: 0.890625, y: 0.515625 },\n { x: 0.921875, y: 0.515625 },\n { x: 0.921875, y: 0.515625 },\n { x: 0.953125, y: 0.515625 },\n { x: 0.953125, y: 0.515625 },\n { x: 0.984375, y: 0.515625 },\n { x: 0.984375, y: 0.515625 },\n { x: 0.015625, y: 0.546875 },\n { x: 0.015625, y: 0.546875 },\n { x: 0.046875, y: 0.546875 },\n { x: 0.046875, y: 0.546875 },\n { x: 0.078125, y: 0.546875 },\n { x: 0.078125, y: 0.546875 },\n { x: 0.109375, y: 0.546875 },\n { x: 0.109375, y: 0.546875 },\n { x: 0.140625, y: 0.546875 },\n { x: 0.140625, y: 0.546875 },\n { x: 0.171875, y: 0.546875 },\n { x: 0.171875, y: 0.546875 },\n { x: 0.203125, y: 0.546875 },\n { x: 0.203125, y: 0.546875 },\n { x: 0.234375, y: 0.546875 },\n { x: 0.234375, y: 0.546875 },\n { x: 0.265625, y: 0.546875 },\n { x: 0.265625, y: 0.546875 },\n { x: 0.296875, y: 0.546875 },\n { x: 0.296875, y: 0.546875 },\n { x: 0.328125, y: 0.546875 },\n { x: 0.328125, y: 0.546875 },\n { x: 0.359375, y: 0.546875 },\n { x: 0.359375, y: 0.546875 },\n { x: 0.390625, y: 0.546875 },\n { x: 0.390625, y: 0.546875 },\n { x: 0.421875, y: 0.546875 },\n { x: 0.421875, y: 0.546875 },\n { x: 0.453125, y: 0.546875 },\n { x: 0.453125, y: 0.546875 },\n { x: 0.484375, y: 0.546875 },\n { x: 0.484375, y: 0.546875 },\n { x: 0.515625, y: 0.546875 },\n { x: 0.515625, y: 0.546875 },\n { x: 0.546875, y: 0.546875 },\n { x: 0.546875, y: 0.546875 },\n { x: 0.578125, y: 0.546875 },\n { x: 0.578125, y: 0.546875 },\n { x: 0.609375, y: 0.546875 },\n { x: 0.609375, y: 0.546875 },\n { x: 0.640625, y: 0.546875 },\n { x: 0.640625, y: 0.546875 },\n { x: 0.671875, y: 0.546875 },\n { x: 0.671875, y: 0.546875 },\n { x: 0.703125, y: 0.546875 },\n { x: 0.703125, y: 0.546875 },\n { x: 0.734375, y: 0.546875 },\n { x: 0.734375, y: 0.546875 },\n { x: 0.765625, y: 0.546875 },\n { x: 0.765625, y: 0.546875 },\n { x: 0.796875, y: 0.546875 },\n { x: 0.796875, y: 0.546875 },\n { x: 0.828125, y: 0.546875 },\n { x: 0.828125, y: 0.546875 },\n { x: 0.859375, y: 0.546875 },\n { x: 0.859375, y: 0.546875 },\n { x: 0.890625, y: 0.546875 },\n { x: 0.890625, y: 0.546875 },\n { x: 0.921875, y: 0.546875 },\n { x: 0.921875, y: 0.546875 },\n { x: 0.953125, y: 0.546875 },\n { x: 0.953125, y: 0.546875 },\n { x: 0.984375, y: 0.546875 },\n { x: 0.984375, y: 0.546875 },\n { x: 0.015625, y: 0.578125 },\n { x: 0.015625, y: 0.578125 },\n { x: 0.046875, y: 0.578125 },\n { x: 0.046875, y: 0.578125 },\n { x: 0.078125, y: 0.578125 },\n { x: 0.078125, y: 0.578125 },\n { x: 0.109375, y: 0.578125 },\n { x: 0.109375, y: 0.578125 },\n { x: 0.140625, y: 0.578125 },\n { x: 0.140625, y: 0.578125 },\n { x: 0.171875, y: 0.578125 },\n { x: 0.171875, y: 0.578125 },\n { x: 0.203125, y: 0.578125 },\n { x: 0.203125, y: 0.578125 },\n { x: 0.234375, y: 0.578125 },\n { x: 0.234375, y: 0.578125 },\n { x: 0.265625, y: 0.578125 },\n { x: 0.265625, y: 0.578125 },\n { x: 0.296875, y: 0.578125 },\n { x: 0.296875, y: 0.578125 },\n { x: 0.328125, y: 0.578125 },\n { x: 0.328125, y: 0.578125 },\n { x: 0.359375, y: 0.578125 },\n { x: 0.359375, y: 0.578125 },\n { x: 0.390625, y: 0.578125 },\n { x: 0.390625, y: 0.578125 },\n { x: 0.421875, y: 0.578125 },\n { x: 0.421875, y: 0.578125 },\n { x: 0.453125, y: 0.578125 },\n { x: 0.453125, y: 0.578125 },\n { x: 0.484375, y: 0.578125 },\n { x: 0.484375, y: 0.578125 },\n { x: 0.515625, y: 0.578125 },\n { x: 0.515625, y: 0.578125 },\n { x: 0.546875, y: 0.578125 },\n { x: 0.546875, y: 0.578125 },\n { x: 0.578125, y: 0.578125 },\n { x: 0.578125, y: 0.578125 },\n { x: 0.609375, y: 0.578125 },\n { x: 0.609375, y: 0.578125 },\n { x: 0.640625, y: 0.578125 },\n { x: 0.640625, y: 0.578125 },\n { x: 0.671875, y: 0.578125 },\n { x: 0.671875, y: 0.578125 },\n { x: 0.703125, y: 0.578125 },\n { x: 0.703125, y: 0.578125 },\n { x: 0.734375, y: 0.578125 },\n { x: 0.734375, y: 0.578125 },\n { x: 0.765625, y: 0.578125 },\n { x: 0.765625, y: 0.578125 },\n { x: 0.796875, y: 0.578125 },\n { x: 0.796875, y: 0.578125 },\n { x: 0.828125, y: 0.578125 },\n { x: 0.828125, y: 0.578125 },\n { x: 0.859375, y: 0.578125 },\n { x: 0.859375, y: 0.578125 },\n { x: 0.890625, y: 0.578125 },\n { x: 0.890625, y: 0.578125 },\n { x: 0.921875, y: 0.578125 },\n { x: 0.921875, y: 0.578125 },\n { x: 0.953125, y: 0.578125 },\n { x: 0.953125, y: 0.578125 },\n { x: 0.984375, y: 0.578125 },\n { x: 0.984375, y: 0.578125 },\n { x: 0.015625, y: 0.609375 },\n { x: 0.015625, y: 0.609375 },\n { x: 0.046875, y: 0.609375 },\n { x: 0.046875, y: 0.609375 },\n { x: 0.078125, y: 0.609375 },\n { x: 0.078125, y: 0.609375 },\n { x: 0.109375, y: 0.609375 },\n { x: 0.109375, y: 0.609375 },\n { x: 0.140625, y: 0.609375 },\n { x: 0.140625, y: 0.609375 },\n { x: 0.171875, y: 0.609375 },\n { x: 0.171875, y: 0.609375 },\n { x: 0.203125, y: 0.609375 },\n { x: 0.203125, y: 0.609375 },\n { x: 0.234375, y: 0.609375 },\n { x: 0.234375, y: 0.609375 },\n { x: 0.265625, y: 0.609375 },\n { x: 0.265625, y: 0.609375 },\n { x: 0.296875, y: 0.609375 },\n { x: 0.296875, y: 0.609375 },\n { x: 0.328125, y: 0.609375 },\n { x: 0.328125, y: 0.609375 },\n { x: 0.359375, y: 0.609375 },\n { x: 0.359375, y: 0.609375 },\n { x: 0.390625, y: 0.609375 },\n { x: 0.390625, y: 0.609375 },\n { x: 0.421875, y: 0.609375 },\n { x: 0.421875, y: 0.609375 },\n { x: 0.453125, y: 0.609375 },\n { x: 0.453125, y: 0.609375 },\n { x: 0.484375, y: 0.609375 },\n { x: 0.484375, y: 0.609375 },\n { x: 0.515625, y: 0.609375 },\n { x: 0.515625, y: 0.609375 },\n { x: 0.546875, y: 0.609375 },\n { x: 0.546875, y: 0.609375 },\n { x: 0.578125, y: 0.609375 },\n { x: 0.578125, y: 0.609375 },\n { x: 0.609375, y: 0.609375 },\n { x: 0.609375, y: 0.609375 },\n { x: 0.640625, y: 0.609375 },\n { x: 0.640625, y: 0.609375 },\n { x: 0.671875, y: 0.609375 },\n { x: 0.671875, y: 0.609375 },\n { x: 0.703125, y: 0.609375 },\n { x: 0.703125, y: 0.609375 },\n { x: 0.734375, y: 0.609375 },\n { x: 0.734375, y: 0.609375 },\n { x: 0.765625, y: 0.609375 },\n { x: 0.765625, y: 0.609375 },\n { x: 0.796875, y: 0.609375 },\n { x: 0.796875, y: 0.609375 },\n { x: 0.828125, y: 0.609375 },\n { x: 0.828125, y: 0.609375 },\n { x: 0.859375, y: 0.609375 },\n { x: 0.859375, y: 0.609375 },\n { x: 0.890625, y: 0.609375 },\n { x: 0.890625, y: 0.609375 },\n { x: 0.921875, y: 0.609375 },\n { x: 0.921875, y: 0.609375 },\n { x: 0.953125, y: 0.609375 },\n { x: 0.953125, y: 0.609375 },\n { x: 0.984375, y: 0.609375 },\n { x: 0.984375, y: 0.609375 },\n { x: 0.015625, y: 0.640625 },\n { x: 0.015625, y: 0.640625 },\n { x: 0.046875, y: 0.640625 },\n { x: 0.046875, y: 0.640625 },\n { x: 0.078125, y: 0.640625 },\n { x: 0.078125, y: 0.640625 },\n { x: 0.109375, y: 0.640625 },\n { x: 0.109375, y: 0.640625 },\n { x: 0.140625, y: 0.640625 },\n { x: 0.140625, y: 0.640625 },\n { x: 0.171875, y: 0.640625 },\n { x: 0.171875, y: 0.640625 },\n { x: 0.203125, y: 0.640625 },\n { x: 0.203125, y: 0.640625 },\n { x: 0.234375, y: 0.640625 },\n { x: 0.234375, y: 0.640625 },\n { x: 0.265625, y: 0.640625 },\n { x: 0.265625, y: 0.640625 },\n { x: 0.296875, y: 0.640625 },\n { x: 0.296875, y: 0.640625 },\n { x: 0.328125, y: 0.640625 },\n { x: 0.328125, y: 0.640625 },\n { x: 0.359375, y: 0.640625 },\n { x: 0.359375, y: 0.640625 },\n { x: 0.390625, y: 0.640625 },\n { x: 0.390625, y: 0.640625 },\n { x: 0.421875, y: 0.640625 },\n { x: 0.421875, y: 0.640625 },\n { x: 0.453125, y: 0.640625 },\n { x: 0.453125, y: 0.640625 },\n { x: 0.484375, y: 0.640625 },\n { x: 0.484375, y: 0.640625 },\n { x: 0.515625, y: 0.640625 },\n { x: 0.515625, y: 0.640625 },\n { x: 0.546875, y: 0.640625 },\n { x: 0.546875, y: 0.640625 },\n { x: 0.578125, y: 0.640625 },\n { x: 0.578125, y: 0.640625 },\n { x: 0.609375, y: 0.640625 },\n { x: 0.609375, y: 0.640625 },\n { x: 0.640625, y: 0.640625 },\n { x: 0.640625, y: 0.640625 },\n { x: 0.671875, y: 0.640625 },\n { x: 0.671875, y: 0.640625 },\n { x: 0.703125, y: 0.640625 },\n { x: 0.703125, y: 0.640625 },\n { x: 0.734375, y: 0.640625 },\n { x: 0.734375, y: 0.640625 },\n { x: 0.765625, y: 0.640625 },\n { x: 0.765625, y: 0.640625 },\n { x: 0.796875, y: 0.640625 },\n { x: 0.796875, y: 0.640625 },\n { x: 0.828125, y: 0.640625 },\n { x: 0.828125, y: 0.640625 },\n { x: 0.859375, y: 0.640625 },\n { x: 0.859375, y: 0.640625 },\n { x: 0.890625, y: 0.640625 },\n { x: 0.890625, y: 0.640625 },\n { x: 0.921875, y: 0.640625 },\n { x: 0.921875, y: 0.640625 },\n { x: 0.953125, y: 0.640625 },\n { x: 0.953125, y: 0.640625 },\n { x: 0.984375, y: 0.640625 },\n { x: 0.984375, y: 0.640625 },\n { x: 0.015625, y: 0.671875 },\n { x: 0.015625, y: 0.671875 },\n { x: 0.046875, y: 0.671875 },\n { x: 0.046875, y: 0.671875 },\n { x: 0.078125, y: 0.671875 },\n { x: 0.078125, y: 0.671875 },\n { x: 0.109375, y: 0.671875 },\n { x: 0.109375, y: 0.671875 },\n { x: 0.140625, y: 0.671875 },\n { x: 0.140625, y: 0.671875 },\n { x: 0.171875, y: 0.671875 },\n { x: 0.171875, y: 0.671875 },\n { x: 0.203125, y: 0.671875 },\n { x: 0.203125, y: 0.671875 },\n { x: 0.234375, y: 0.671875 },\n { x: 0.234375, y: 0.671875 },\n { x: 0.265625, y: 0.671875 },\n { x: 0.265625, y: 0.671875 },\n { x: 0.296875, y: 0.671875 },\n { x: 0.296875, y: 0.671875 },\n { x: 0.328125, y: 0.671875 },\n { x: 0.328125, y: 0.671875 },\n { x: 0.359375, y: 0.671875 },\n { x: 0.359375, y: 0.671875 },\n { x: 0.390625, y: 0.671875 },\n { x: 0.390625, y: 0.671875 },\n { x: 0.421875, y: 0.671875 },\n { x: 0.421875, y: 0.671875 },\n { x: 0.453125, y: 0.671875 },\n { x: 0.453125, y: 0.671875 },\n { x: 0.484375, y: 0.671875 },\n { x: 0.484375, y: 0.671875 },\n { x: 0.515625, y: 0.671875 },\n { x: 0.515625, y: 0.671875 },\n { x: 0.546875, y: 0.671875 },\n { x: 0.546875, y: 0.671875 },\n { x: 0.578125, y: 0.671875 },\n { x: 0.578125, y: 0.671875 },\n { x: 0.609375, y: 0.671875 },\n { x: 0.609375, y: 0.671875 },\n { x: 0.640625, y: 0.671875 },\n { x: 0.640625, y: 0.671875 },\n { x: 0.671875, y: 0.671875 },\n { x: 0.671875, y: 0.671875 },\n { x: 0.703125, y: 0.671875 },\n { x: 0.703125, y: 0.671875 },\n { x: 0.734375, y: 0.671875 },\n { x: 0.734375, y: 0.671875 },\n { x: 0.765625, y: 0.671875 },\n { x: 0.765625, y: 0.671875 },\n { x: 0.796875, y: 0.671875 },\n { x: 0.796875, y: 0.671875 },\n { x: 0.828125, y: 0.671875 },\n { x: 0.828125, y: 0.671875 },\n { x: 0.859375, y: 0.671875 },\n { x: 0.859375, y: 0.671875 },\n { x: 0.890625, y: 0.671875 },\n { x: 0.890625, y: 0.671875 },\n { x: 0.921875, y: 0.671875 },\n { x: 0.921875, y: 0.671875 },\n { x: 0.953125, y: 0.671875 },\n { x: 0.953125, y: 0.671875 },\n { x: 0.984375, y: 0.671875 },\n { x: 0.984375, y: 0.671875 },\n { x: 0.015625, y: 0.703125 },\n { x: 0.015625, y: 0.703125 },\n { x: 0.046875, y: 0.703125 },\n { x: 0.046875, y: 0.703125 },\n { x: 0.078125, y: 0.703125 },\n { x: 0.078125, y: 0.703125 },\n { x: 0.109375, y: 0.703125 },\n { x: 0.109375, y: 0.703125 },\n { x: 0.140625, y: 0.703125 },\n { x: 0.140625, y: 0.703125 },\n { x: 0.171875, y: 0.703125 },\n { x: 0.171875, y: 0.703125 },\n { x: 0.203125, y: 0.703125 },\n { x: 0.203125, y: 0.703125 },\n { x: 0.234375, y: 0.703125 },\n { x: 0.234375, y: 0.703125 },\n { x: 0.265625, y: 0.703125 },\n { x: 0.265625, y: 0.703125 },\n { x: 0.296875, y: 0.703125 },\n { x: 0.296875, y: 0.703125 },\n { x: 0.328125, y: 0.703125 },\n { x: 0.328125, y: 0.703125 },\n { x: 0.359375, y: 0.703125 },\n { x: 0.359375, y: 0.703125 },\n { x: 0.390625, y: 0.703125 },\n { x: 0.390625, y: 0.703125 },\n { x: 0.421875, y: 0.703125 },\n { x: 0.421875, y: 0.703125 },\n { x: 0.453125, y: 0.703125 },\n { x: 0.453125, y: 0.703125 },\n { x: 0.484375, y: 0.703125 },\n { x: 0.484375, y: 0.703125 },\n { x: 0.515625, y: 0.703125 },\n { x: 0.515625, y: 0.703125 },\n { x: 0.546875, y: 0.703125 },\n { x: 0.546875, y: 0.703125 },\n { x: 0.578125, y: 0.703125 },\n { x: 0.578125, y: 0.703125 },\n { x: 0.609375, y: 0.703125 },\n { x: 0.609375, y: 0.703125 },\n { x: 0.640625, y: 0.703125 },\n { x: 0.640625, y: 0.703125 },\n { x: 0.671875, y: 0.703125 },\n { x: 0.671875, y: 0.703125 },\n { x: 0.703125, y: 0.703125 },\n { x: 0.703125, y: 0.703125 },\n { x: 0.734375, y: 0.703125 },\n { x: 0.734375, y: 0.703125 },\n { x: 0.765625, y: 0.703125 },\n { x: 0.765625, y: 0.703125 },\n { x: 0.796875, y: 0.703125 },\n { x: 0.796875, y: 0.703125 },\n { x: 0.828125, y: 0.703125 },\n { x: 0.828125, y: 0.703125 },\n { x: 0.859375, y: 0.703125 },\n { x: 0.859375, y: 0.703125 },\n { x: 0.890625, y: 0.703125 },\n { x: 0.890625, y: 0.703125 },\n { x: 0.921875, y: 0.703125 },\n { x: 0.921875, y: 0.703125 },\n { x: 0.953125, y: 0.703125 },\n { x: 0.953125, y: 0.703125 },\n { x: 0.984375, y: 0.703125 },\n { x: 0.984375, y: 0.703125 },\n { x: 0.015625, y: 0.734375 },\n { x: 0.015625, y: 0.734375 },\n { x: 0.046875, y: 0.734375 },\n { x: 0.046875, y: 0.734375 },\n { x: 0.078125, y: 0.734375 },\n { x: 0.078125, y: 0.734375 },\n { x: 0.109375, y: 0.734375 },\n { x: 0.109375, y: 0.734375 },\n { x: 0.140625, y: 0.734375 },\n { x: 0.140625, y: 0.734375 },\n { x: 0.171875, y: 0.734375 },\n { x: 0.171875, y: 0.734375 },\n { x: 0.203125, y: 0.734375 },\n { x: 0.203125, y: 0.734375 },\n { x: 0.234375, y: 0.734375 },\n { x: 0.234375, y: 0.734375 },\n { x: 0.265625, y: 0.734375 },\n { x: 0.265625, y: 0.734375 },\n { x: 0.296875, y: 0.734375 },\n { x: 0.296875, y: 0.734375 },\n { x: 0.328125, y: 0.734375 },\n { x: 0.328125, y: 0.734375 },\n { x: 0.359375, y: 0.734375 },\n { x: 0.359375, y: 0.734375 },\n { x: 0.390625, y: 0.734375 },\n { x: 0.390625, y: 0.734375 },\n { x: 0.421875, y: 0.734375 },\n { x: 0.421875, y: 0.734375 },\n { x: 0.453125, y: 0.734375 },\n { x: 0.453125, y: 0.734375 },\n { x: 0.484375, y: 0.734375 },\n { x: 0.484375, y: 0.734375 },\n { x: 0.515625, y: 0.734375 },\n { x: 0.515625, y: 0.734375 },\n { x: 0.546875, y: 0.734375 },\n { x: 0.546875, y: 0.734375 },\n { x: 0.578125, y: 0.734375 },\n { x: 0.578125, y: 0.734375 },\n { x: 0.609375, y: 0.734375 },\n { x: 0.609375, y: 0.734375 },\n { x: 0.640625, y: 0.734375 },\n { x: 0.640625, y: 0.734375 },\n { x: 0.671875, y: 0.734375 },\n { x: 0.671875, y: 0.734375 },\n { x: 0.703125, y: 0.734375 },\n { x: 0.703125, y: 0.734375 },\n { x: 0.734375, y: 0.734375 },\n { x: 0.734375, y: 0.734375 },\n { x: 0.765625, y: 0.734375 },\n { x: 0.765625, y: 0.734375 },\n { x: 0.796875, y: 0.734375 },\n { x: 0.796875, y: 0.734375 },\n { x: 0.828125, y: 0.734375 },\n { x: 0.828125, y: 0.734375 },\n { x: 0.859375, y: 0.734375 },\n { x: 0.859375, y: 0.734375 },\n { x: 0.890625, y: 0.734375 },\n { x: 0.890625, y: 0.734375 },\n { x: 0.921875, y: 0.734375 },\n { x: 0.921875, y: 0.734375 },\n { x: 0.953125, y: 0.734375 },\n { x: 0.953125, y: 0.734375 },\n { x: 0.984375, y: 0.734375 },\n { x: 0.984375, y: 0.734375 },\n { x: 0.015625, y: 0.765625 },\n { x: 0.015625, y: 0.765625 },\n { x: 0.046875, y: 0.765625 },\n { x: 0.046875, y: 0.765625 },\n { x: 0.078125, y: 0.765625 },\n { x: 0.078125, y: 0.765625 },\n { x: 0.109375, y: 0.765625 },\n { x: 0.109375, y: 0.765625 },\n { x: 0.140625, y: 0.765625 },\n { x: 0.140625, y: 0.765625 },\n { x: 0.171875, y: 0.765625 },\n { x: 0.171875, y: 0.765625 },\n { x: 0.203125, y: 0.765625 },\n { x: 0.203125, y: 0.765625 },\n { x: 0.234375, y: 0.765625 },\n { x: 0.234375, y: 0.765625 },\n { x: 0.265625, y: 0.765625 },\n { x: 0.265625, y: 0.765625 },\n { x: 0.296875, y: 0.765625 },\n { x: 0.296875, y: 0.765625 },\n { x: 0.328125, y: 0.765625 },\n { x: 0.328125, y: 0.765625 },\n { x: 0.359375, y: 0.765625 },\n { x: 0.359375, y: 0.765625 },\n { x: 0.390625, y: 0.765625 },\n { x: 0.390625, y: 0.765625 },\n { x: 0.421875, y: 0.765625 },\n { x: 0.421875, y: 0.765625 },\n { x: 0.453125, y: 0.765625 },\n { x: 0.453125, y: 0.765625 },\n { x: 0.484375, y: 0.765625 },\n { x: 0.484375, y: 0.765625 },\n { x: 0.515625, y: 0.765625 },\n { x: 0.515625, y: 0.765625 },\n { x: 0.546875, y: 0.765625 },\n { x: 0.546875, y: 0.765625 },\n { x: 0.578125, y: 0.765625 },\n { x: 0.578125, y: 0.765625 },\n { x: 0.609375, y: 0.765625 },\n { x: 0.609375, y: 0.765625 },\n { x: 0.640625, y: 0.765625 },\n { x: 0.640625, y: 0.765625 },\n { x: 0.671875, y: 0.765625 },\n { x: 0.671875, y: 0.765625 },\n { x: 0.703125, y: 0.765625 },\n { x: 0.703125, y: 0.765625 },\n { x: 0.734375, y: 0.765625 },\n { x: 0.734375, y: 0.765625 },\n { x: 0.765625, y: 0.765625 },\n { x: 0.765625, y: 0.765625 },\n { x: 0.796875, y: 0.765625 },\n { x: 0.796875, y: 0.765625 },\n { x: 0.828125, y: 0.765625 },\n { x: 0.828125, y: 0.765625 },\n { x: 0.859375, y: 0.765625 },\n { x: 0.859375, y: 0.765625 },\n { x: 0.890625, y: 0.765625 },\n { x: 0.890625, y: 0.765625 },\n { x: 0.921875, y: 0.765625 },\n { x: 0.921875, y: 0.765625 },\n { x: 0.953125, y: 0.765625 },\n { x: 0.953125, y: 0.765625 },\n { x: 0.984375, y: 0.765625 },\n { x: 0.984375, y: 0.765625 },\n { x: 0.015625, y: 0.796875 },\n { x: 0.015625, y: 0.796875 },\n { x: 0.046875, y: 0.796875 },\n { x: 0.046875, y: 0.796875 },\n { x: 0.078125, y: 0.796875 },\n { x: 0.078125, y: 0.796875 },\n { x: 0.109375, y: 0.796875 },\n { x: 0.109375, y: 0.796875 },\n { x: 0.140625, y: 0.796875 },\n { x: 0.140625, y: 0.796875 },\n { x: 0.171875, y: 0.796875 },\n { x: 0.171875, y: 0.796875 },\n { x: 0.203125, y: 0.796875 },\n { x: 0.203125, y: 0.796875 },\n { x: 0.234375, y: 0.796875 },\n { x: 0.234375, y: 0.796875 },\n { x: 0.265625, y: 0.796875 },\n { x: 0.265625, y: 0.796875 },\n { x: 0.296875, y: 0.796875 },\n { x: 0.296875, y: 0.796875 },\n { x: 0.328125, y: 0.796875 },\n { x: 0.328125, y: 0.796875 },\n { x: 0.359375, y: 0.796875 },\n { x: 0.359375, y: 0.796875 },\n { x: 0.390625, y: 0.796875 },\n { x: 0.390625, y: 0.796875 },\n { x: 0.421875, y: 0.796875 },\n { x: 0.421875, y: 0.796875 },\n { x: 0.453125, y: 0.796875 },\n { x: 0.453125, y: 0.796875 },\n { x: 0.484375, y: 0.796875 },\n { x: 0.484375, y: 0.796875 },\n { x: 0.515625, y: 0.796875 },\n { x: 0.515625, y: 0.796875 },\n { x: 0.546875, y: 0.796875 },\n { x: 0.546875, y: 0.796875 },\n { x: 0.578125, y: 0.796875 },\n { x: 0.578125, y: 0.796875 },\n { x: 0.609375, y: 0.796875 },\n { x: 0.609375, y: 0.796875 },\n { x: 0.640625, y: 0.796875 },\n { x: 0.640625, y: 0.796875 },\n { x: 0.671875, y: 0.796875 },\n { x: 0.671875, y: 0.796875 },\n { x: 0.703125, y: 0.796875 },\n { x: 0.703125, y: 0.796875 },\n { x: 0.734375, y: 0.796875 },\n { x: 0.734375, y: 0.796875 },\n { x: 0.765625, y: 0.796875 },\n { x: 0.765625, y: 0.796875 },\n { x: 0.796875, y: 0.796875 },\n { x: 0.796875, y: 0.796875 },\n { x: 0.828125, y: 0.796875 },\n { x: 0.828125, y: 0.796875 },\n { x: 0.859375, y: 0.796875 },\n { x: 0.859375, y: 0.796875 },\n { x: 0.890625, y: 0.796875 },\n { x: 0.890625, y: 0.796875 },\n { x: 0.921875, y: 0.796875 },\n { x: 0.921875, y: 0.796875 },\n { x: 0.953125, y: 0.796875 },\n { x: 0.953125, y: 0.796875 },\n { x: 0.984375, y: 0.796875 },\n { x: 0.984375, y: 0.796875 },\n { x: 0.015625, y: 0.828125 },\n { x: 0.015625, y: 0.828125 },\n { x: 0.046875, y: 0.828125 },\n { x: 0.046875, y: 0.828125 },\n { x: 0.078125, y: 0.828125 },\n { x: 0.078125, y: 0.828125 },\n { x: 0.109375, y: 0.828125 },\n { x: 0.109375, y: 0.828125 },\n { x: 0.140625, y: 0.828125 },\n { x: 0.140625, y: 0.828125 },\n { x: 0.171875, y: 0.828125 },\n { x: 0.171875, y: 0.828125 },\n { x: 0.203125, y: 0.828125 },\n { x: 0.203125, y: 0.828125 },\n { x: 0.234375, y: 0.828125 },\n { x: 0.234375, y: 0.828125 },\n { x: 0.265625, y: 0.828125 },\n { x: 0.265625, y: 0.828125 },\n { x: 0.296875, y: 0.828125 },\n { x: 0.296875, y: 0.828125 },\n { x: 0.328125, y: 0.828125 },\n { x: 0.328125, y: 0.828125 },\n { x: 0.359375, y: 0.828125 },\n { x: 0.359375, y: 0.828125 },\n { x: 0.390625, y: 0.828125 },\n { x: 0.390625, y: 0.828125 },\n { x: 0.421875, y: 0.828125 },\n { x: 0.421875, y: 0.828125 },\n { x: 0.453125, y: 0.828125 },\n { x: 0.453125, y: 0.828125 },\n { x: 0.484375, y: 0.828125 },\n { x: 0.484375, y: 0.828125 },\n { x: 0.515625, y: 0.828125 },\n { x: 0.515625, y: 0.828125 },\n { x: 0.546875, y: 0.828125 },\n { x: 0.546875, y: 0.828125 },\n { x: 0.578125, y: 0.828125 },\n { x: 0.578125, y: 0.828125 },\n { x: 0.609375, y: 0.828125 },\n { x: 0.609375, y: 0.828125 },\n { x: 0.640625, y: 0.828125 },\n { x: 0.640625, y: 0.828125 },\n { x: 0.671875, y: 0.828125 },\n { x: 0.671875, y: 0.828125 },\n { x: 0.703125, y: 0.828125 },\n { x: 0.703125, y: 0.828125 },\n { x: 0.734375, y: 0.828125 },\n { x: 0.734375, y: 0.828125 },\n { x: 0.765625, y: 0.828125 },\n { x: 0.765625, y: 0.828125 },\n { x: 0.796875, y: 0.828125 },\n { x: 0.796875, y: 0.828125 },\n { x: 0.828125, y: 0.828125 },\n { x: 0.828125, y: 0.828125 },\n { x: 0.859375, y: 0.828125 },\n { x: 0.859375, y: 0.828125 },\n { x: 0.890625, y: 0.828125 },\n { x: 0.890625, y: 0.828125 },\n { x: 0.921875, y: 0.828125 },\n { x: 0.921875, y: 0.828125 },\n { x: 0.953125, y: 0.828125 },\n { x: 0.953125, y: 0.828125 },\n { x: 0.984375, y: 0.828125 },\n { x: 0.984375, y: 0.828125 },\n { x: 0.015625, y: 0.859375 },\n { x: 0.015625, y: 0.859375 },\n { x: 0.046875, y: 0.859375 },\n { x: 0.046875, y: 0.859375 },\n { x: 0.078125, y: 0.859375 },\n { x: 0.078125, y: 0.859375 },\n { x: 0.109375, y: 0.859375 },\n { x: 0.109375, y: 0.859375 },\n { x: 0.140625, y: 0.859375 },\n { x: 0.140625, y: 0.859375 },\n { x: 0.171875, y: 0.859375 },\n { x: 0.171875, y: 0.859375 },\n { x: 0.203125, y: 0.859375 },\n { x: 0.203125, y: 0.859375 },\n { x: 0.234375, y: 0.859375 },\n { x: 0.234375, y: 0.859375 },\n { x: 0.265625, y: 0.859375 },\n { x: 0.265625, y: 0.859375 },\n { x: 0.296875, y: 0.859375 },\n { x: 0.296875, y: 0.859375 },\n { x: 0.328125, y: 0.859375 },\n { x: 0.328125, y: 0.859375 },\n { x: 0.359375, y: 0.859375 },\n { x: 0.359375, y: 0.859375 },\n { x: 0.390625, y: 0.859375 },\n { x: 0.390625, y: 0.859375 },\n { x: 0.421875, y: 0.859375 },\n { x: 0.421875, y: 0.859375 },\n { x: 0.453125, y: 0.859375 },\n { x: 0.453125, y: 0.859375 },\n { x: 0.484375, y: 0.859375 },\n { x: 0.484375, y: 0.859375 },\n { x: 0.515625, y: 0.859375 },\n { x: 0.515625, y: 0.859375 },\n { x: 0.546875, y: 0.859375 },\n { x: 0.546875, y: 0.859375 },\n { x: 0.578125, y: 0.859375 },\n { x: 0.578125, y: 0.859375 },\n { x: 0.609375, y: 0.859375 },\n { x: 0.609375, y: 0.859375 },\n { x: 0.640625, y: 0.859375 },\n { x: 0.640625, y: 0.859375 },\n { x: 0.671875, y: 0.859375 },\n { x: 0.671875, y: 0.859375 },\n { x: 0.703125, y: 0.859375 },\n { x: 0.703125, y: 0.859375 },\n { x: 0.734375, y: 0.859375 },\n { x: 0.734375, y: 0.859375 },\n { x: 0.765625, y: 0.859375 },\n { x: 0.765625, y: 0.859375 },\n { x: 0.796875, y: 0.859375 },\n { x: 0.796875, y: 0.859375 },\n { x: 0.828125, y: 0.859375 },\n { x: 0.828125, y: 0.859375 },\n { x: 0.859375, y: 0.859375 },\n { x: 0.859375, y: 0.859375 },\n { x: 0.890625, y: 0.859375 },\n { x: 0.890625, y: 0.859375 },\n { x: 0.921875, y: 0.859375 },\n { x: 0.921875, y: 0.859375 },\n { x: 0.953125, y: 0.859375 },\n { x: 0.953125, y: 0.859375 },\n { x: 0.984375, y: 0.859375 },\n { x: 0.984375, y: 0.859375 },\n { x: 0.015625, y: 0.890625 },\n { x: 0.015625, y: 0.890625 },\n { x: 0.046875, y: 0.890625 },\n { x: 0.046875, y: 0.890625 },\n { x: 0.078125, y: 0.890625 },\n { x: 0.078125, y: 0.890625 },\n { x: 0.109375, y: 0.890625 },\n { x: 0.109375, y: 0.890625 },\n { x: 0.140625, y: 0.890625 },\n { x: 0.140625, y: 0.890625 },\n { x: 0.171875, y: 0.890625 },\n { x: 0.171875, y: 0.890625 },\n { x: 0.203125, y: 0.890625 },\n { x: 0.203125, y: 0.890625 },\n { x: 0.234375, y: 0.890625 },\n { x: 0.234375, y: 0.890625 },\n { x: 0.265625, y: 0.890625 },\n { x: 0.265625, y: 0.890625 },\n { x: 0.296875, y: 0.890625 },\n { x: 0.296875, y: 0.890625 },\n { x: 0.328125, y: 0.890625 },\n { x: 0.328125, y: 0.890625 },\n { x: 0.359375, y: 0.890625 },\n { x: 0.359375, y: 0.890625 },\n { x: 0.390625, y: 0.890625 },\n { x: 0.390625, y: 0.890625 },\n { x: 0.421875, y: 0.890625 },\n { x: 0.421875, y: 0.890625 },\n { x: 0.453125, y: 0.890625 },\n { x: 0.453125, y: 0.890625 },\n { x: 0.484375, y: 0.890625 },\n { x: 0.484375, y: 0.890625 },\n { x: 0.515625, y: 0.890625 },\n { x: 0.515625, y: 0.890625 },\n { x: 0.546875, y: 0.890625 },\n { x: 0.546875, y: 0.890625 },\n { x: 0.578125, y: 0.890625 },\n { x: 0.578125, y: 0.890625 },\n { x: 0.609375, y: 0.890625 },\n { x: 0.609375, y: 0.890625 },\n { x: 0.640625, y: 0.890625 },\n { x: 0.640625, y: 0.890625 },\n { x: 0.671875, y: 0.890625 },\n { x: 0.671875, y: 0.890625 },\n { x: 0.703125, y: 0.890625 },\n { x: 0.703125, y: 0.890625 },\n { x: 0.734375, y: 0.890625 },\n { x: 0.734375, y: 0.890625 },\n { x: 0.765625, y: 0.890625 },\n { x: 0.765625, y: 0.890625 },\n { x: 0.796875, y: 0.890625 },\n { x: 0.796875, y: 0.890625 },\n { x: 0.828125, y: 0.890625 },\n { x: 0.828125, y: 0.890625 },\n { x: 0.859375, y: 0.890625 },\n { x: 0.859375, y: 0.890625 },\n { x: 0.890625, y: 0.890625 },\n { x: 0.890625, y: 0.890625 },\n { x: 0.921875, y: 0.890625 },\n { x: 0.921875, y: 0.890625 },\n { x: 0.953125, y: 0.890625 },\n { x: 0.953125, y: 0.890625 },\n { x: 0.984375, y: 0.890625 },\n { x: 0.984375, y: 0.890625 },\n { x: 0.015625, y: 0.921875 },\n { x: 0.015625, y: 0.921875 },\n { x: 0.046875, y: 0.921875 },\n { x: 0.046875, y: 0.921875 },\n { x: 0.078125, y: 0.921875 },\n { x: 0.078125, y: 0.921875 },\n { x: 0.109375, y: 0.921875 },\n { x: 0.109375, y: 0.921875 },\n { x: 0.140625, y: 0.921875 },\n { x: 0.140625, y: 0.921875 },\n { x: 0.171875, y: 0.921875 },\n { x: 0.171875, y: 0.921875 },\n { x: 0.203125, y: 0.921875 },\n { x: 0.203125, y: 0.921875 },\n { x: 0.234375, y: 0.921875 },\n { x: 0.234375, y: 0.921875 },\n { x: 0.265625, y: 0.921875 },\n { x: 0.265625, y: 0.921875 },\n { x: 0.296875, y: 0.921875 },\n { x: 0.296875, y: 0.921875 },\n { x: 0.328125, y: 0.921875 },\n { x: 0.328125, y: 0.921875 },\n { x: 0.359375, y: 0.921875 },\n { x: 0.359375, y: 0.921875 },\n { x: 0.390625, y: 0.921875 },\n { x: 0.390625, y: 0.921875 },\n { x: 0.421875, y: 0.921875 },\n { x: 0.421875, y: 0.921875 },\n { x: 0.453125, y: 0.921875 },\n { x: 0.453125, y: 0.921875 },\n { x: 0.484375, y: 0.921875 },\n { x: 0.484375, y: 0.921875 },\n { x: 0.515625, y: 0.921875 },\n { x: 0.515625, y: 0.921875 },\n { x: 0.546875, y: 0.921875 },\n { x: 0.546875, y: 0.921875 },\n { x: 0.578125, y: 0.921875 },\n { x: 0.578125, y: 0.921875 },\n { x: 0.609375, y: 0.921875 },\n { x: 0.609375, y: 0.921875 },\n { x: 0.640625, y: 0.921875 },\n { x: 0.640625, y: 0.921875 },\n { x: 0.671875, y: 0.921875 },\n { x: 0.671875, y: 0.921875 },\n { x: 0.703125, y: 0.921875 },\n { x: 0.703125, y: 0.921875 },\n { x: 0.734375, y: 0.921875 },\n { x: 0.734375, y: 0.921875 },\n { x: 0.765625, y: 0.921875 },\n { x: 0.765625, y: 0.921875 },\n { x: 0.796875, y: 0.921875 },\n { x: 0.796875, y: 0.921875 },\n { x: 0.828125, y: 0.921875 },\n { x: 0.828125, y: 0.921875 },\n { x: 0.859375, y: 0.921875 },\n { x: 0.859375, y: 0.921875 },\n { x: 0.890625, y: 0.921875 },\n { x: 0.890625, y: 0.921875 },\n { x: 0.921875, y: 0.921875 },\n { x: 0.921875, y: 0.921875 },\n { x: 0.953125, y: 0.921875 },\n { x: 0.953125, y: 0.921875 },\n { x: 0.984375, y: 0.921875 },\n { x: 0.984375, y: 0.921875 },\n { x: 0.015625, y: 0.953125 },\n { x: 0.015625, y: 0.953125 },\n { x: 0.046875, y: 0.953125 },\n { x: 0.046875, y: 0.953125 },\n { x: 0.078125, y: 0.953125 },\n { x: 0.078125, y: 0.953125 },\n { x: 0.109375, y: 0.953125 },\n { x: 0.109375, y: 0.953125 },\n { x: 0.140625, y: 0.953125 },\n { x: 0.140625, y: 0.953125 },\n { x: 0.171875, y: 0.953125 },\n { x: 0.171875, y: 0.953125 },\n { x: 0.203125, y: 0.953125 },\n { x: 0.203125, y: 0.953125 },\n { x: 0.234375, y: 0.953125 },\n { x: 0.234375, y: 0.953125 },\n { x: 0.265625, y: 0.953125 },\n { x: 0.265625, y: 0.953125 },\n { x: 0.296875, y: 0.953125 },\n { x: 0.296875, y: 0.953125 },\n { x: 0.328125, y: 0.953125 },\n { x: 0.328125, y: 0.953125 },\n { x: 0.359375, y: 0.953125 },\n { x: 0.359375, y: 0.953125 },\n { x: 0.390625, y: 0.953125 },\n { x: 0.390625, y: 0.953125 },\n { x: 0.421875, y: 0.953125 },\n { x: 0.421875, y: 0.953125 },\n { x: 0.453125, y: 0.953125 },\n { x: 0.453125, y: 0.953125 },\n { x: 0.484375, y: 0.953125 },\n { x: 0.484375, y: 0.953125 },\n { x: 0.515625, y: 0.953125 },\n { x: 0.515625, y: 0.953125 },\n { x: 0.546875, y: 0.953125 },\n { x: 0.546875, y: 0.953125 },\n { x: 0.578125, y: 0.953125 },\n { x: 0.578125, y: 0.953125 },\n { x: 0.609375, y: 0.953125 },\n { x: 0.609375, y: 0.953125 },\n { x: 0.640625, y: 0.953125 },\n { x: 0.640625, y: 0.953125 },\n { x: 0.671875, y: 0.953125 },\n { x: 0.671875, y: 0.953125 },\n { x: 0.703125, y: 0.953125 },\n { x: 0.703125, y: 0.953125 },\n { x: 0.734375, y: 0.953125 },\n { x: 0.734375, y: 0.953125 },\n { x: 0.765625, y: 0.953125 },\n { x: 0.765625, y: 0.953125 },\n { x: 0.796875, y: 0.953125 },\n { x: 0.796875, y: 0.953125 },\n { x: 0.828125, y: 0.953125 },\n { x: 0.828125, y: 0.953125 },\n { x: 0.859375, y: 0.953125 },\n { x: 0.859375, y: 0.953125 },\n { x: 0.890625, y: 0.953125 },\n { x: 0.890625, y: 0.953125 },\n { x: 0.921875, y: 0.953125 },\n { x: 0.921875, y: 0.953125 },\n { x: 0.953125, y: 0.953125 },\n { x: 0.953125, y: 0.953125 },\n { x: 0.984375, y: 0.953125 },\n { x: 0.984375, y: 0.953125 },\n { x: 0.015625, y: 0.984375 },\n { x: 0.015625, y: 0.984375 },\n { x: 0.046875, y: 0.984375 },\n { x: 0.046875, y: 0.984375 },\n { x: 0.078125, y: 0.984375 },\n { x: 0.078125, y: 0.984375 },\n { x: 0.109375, y: 0.984375 },\n { x: 0.109375, y: 0.984375 },\n { x: 0.140625, y: 0.984375 },\n { x: 0.140625, y: 0.984375 },\n { x: 0.171875, y: 0.984375 },\n { x: 0.171875, y: 0.984375 },\n { x: 0.203125, y: 0.984375 },\n { x: 0.203125, y: 0.984375 },\n { x: 0.234375, y: 0.984375 },\n { x: 0.234375, y: 0.984375 },\n { x: 0.265625, y: 0.984375 },\n { x: 0.265625, y: 0.984375 },\n { x: 0.296875, y: 0.984375 },\n { x: 0.296875, y: 0.984375 },\n { x: 0.328125, y: 0.984375 },\n { x: 0.328125, y: 0.984375 },\n { x: 0.359375, y: 0.984375 },\n { x: 0.359375, y: 0.984375 },\n { x: 0.390625, y: 0.984375 },\n { x: 0.390625, y: 0.984375 },\n { x: 0.421875, y: 0.984375 },\n { x: 0.421875, y: 0.984375 },\n { x: 0.453125, y: 0.984375 },\n { x: 0.453125, y: 0.984375 },\n { x: 0.484375, y: 0.984375 },\n { x: 0.484375, y: 0.984375 },\n { x: 0.515625, y: 0.984375 },\n { x: 0.515625, y: 0.984375 },\n { x: 0.546875, y: 0.984375 },\n { x: 0.546875, y: 0.984375 },\n { x: 0.578125, y: 0.984375 },\n { x: 0.578125, y: 0.984375 },\n { x: 0.609375, y: 0.984375 },\n { x: 0.609375, y: 0.984375 },\n { x: 0.640625, y: 0.984375 },\n { x: 0.640625, y: 0.984375 },\n { x: 0.671875, y: 0.984375 },\n { x: 0.671875, y: 0.984375 },\n { x: 0.703125, y: 0.984375 },\n { x: 0.703125, y: 0.984375 },\n { x: 0.734375, y: 0.984375 },\n { x: 0.734375, y: 0.984375 },\n { x: 0.765625, y: 0.984375 },\n { x: 0.765625, y: 0.984375 },\n { x: 0.796875, y: 0.984375 },\n { x: 0.796875, y: 0.984375 },\n { x: 0.828125, y: 0.984375 },\n { x: 0.828125, y: 0.984375 },\n { x: 0.859375, y: 0.984375 },\n { x: 0.859375, y: 0.984375 },\n { x: 0.890625, y: 0.984375 },\n { x: 0.890625, y: 0.984375 },\n { x: 0.921875, y: 0.984375 },\n { x: 0.921875, y: 0.984375 },\n { x: 0.953125, y: 0.984375 },\n { x: 0.953125, y: 0.984375 },\n { x: 0.984375, y: 0.984375 },\n { x: 0.984375, y: 0.984375 },\n { x: 0.03125, y: 0.03125 },\n { x: 0.03125, y: 0.03125 },\n { x: 0.09375, y: 0.03125 },\n { x: 0.09375, y: 0.03125 },\n { x: 0.15625, y: 0.03125 },\n { x: 0.15625, y: 0.03125 },\n { x: 0.21875, y: 0.03125 },\n { x: 0.21875, y: 0.03125 },\n { x: 0.28125, y: 0.03125 },\n { x: 0.28125, y: 0.03125 },\n { x: 0.34375, y: 0.03125 },\n { x: 0.34375, y: 0.03125 },\n { x: 0.40625, y: 0.03125 },\n { x: 0.40625, y: 0.03125 },\n { x: 0.46875, y: 0.03125 },\n { x: 0.46875, y: 0.03125 },\n { x: 0.53125, y: 0.03125 },\n { x: 0.53125, y: 0.03125 },\n { x: 0.59375, y: 0.03125 },\n { x: 0.59375, y: 0.03125 },\n { x: 0.65625, y: 0.03125 },\n { x: 0.65625, y: 0.03125 },\n { x: 0.71875, y: 0.03125 },\n { x: 0.71875, y: 0.03125 },\n { x: 0.78125, y: 0.03125 },\n { x: 0.78125, y: 0.03125 },\n { x: 0.84375, y: 0.03125 },\n { x: 0.84375, y: 0.03125 },\n { x: 0.90625, y: 0.03125 },\n { x: 0.90625, y: 0.03125 },\n { x: 0.96875, y: 0.03125 },\n { x: 0.96875, y: 0.03125 },\n { x: 0.03125, y: 0.09375 },\n { x: 0.03125, y: 0.09375 },\n { x: 0.09375, y: 0.09375 },\n { x: 0.09375, y: 0.09375 },\n { x: 0.15625, y: 0.09375 },\n { x: 0.15625, y: 0.09375 },\n { x: 0.21875, y: 0.09375 },\n { x: 0.21875, y: 0.09375 },\n { x: 0.28125, y: 0.09375 },\n { x: 0.28125, y: 0.09375 },\n { x: 0.34375, y: 0.09375 },\n { x: 0.34375, y: 0.09375 },\n { x: 0.40625, y: 0.09375 },\n { x: 0.40625, y: 0.09375 },\n { x: 0.46875, y: 0.09375 },\n { x: 0.46875, y: 0.09375 },\n { x: 0.53125, y: 0.09375 },\n { x: 0.53125, y: 0.09375 },\n { x: 0.59375, y: 0.09375 },\n { x: 0.59375, y: 0.09375 },\n { x: 0.65625, y: 0.09375 },\n { x: 0.65625, y: 0.09375 },\n { x: 0.71875, y: 0.09375 },\n { x: 0.71875, y: 0.09375 },\n { x: 0.78125, y: 0.09375 },\n { x: 0.78125, y: 0.09375 },\n { x: 0.84375, y: 0.09375 },\n { x: 0.84375, y: 0.09375 },\n { x: 0.90625, y: 0.09375 },\n { x: 0.90625, y: 0.09375 },\n { x: 0.96875, y: 0.09375 },\n { x: 0.96875, y: 0.09375 },\n { x: 0.03125, y: 0.15625 },\n { x: 0.03125, y: 0.15625 },\n { x: 0.09375, y: 0.15625 },\n { x: 0.09375, y: 0.15625 },\n { x: 0.15625, y: 0.15625 },\n { x: 0.15625, y: 0.15625 },\n { x: 0.21875, y: 0.15625 },\n { x: 0.21875, y: 0.15625 },\n { x: 0.28125, y: 0.15625 },\n { x: 0.28125, y: 0.15625 },\n { x: 0.34375, y: 0.15625 },\n { x: 0.34375, y: 0.15625 },\n { x: 0.40625, y: 0.15625 },\n { x: 0.40625, y: 0.15625 },\n { x: 0.46875, y: 0.15625 },\n { x: 0.46875, y: 0.15625 },\n { x: 0.53125, y: 0.15625 },\n { x: 0.53125, y: 0.15625 },\n { x: 0.59375, y: 0.15625 },\n { x: 0.59375, y: 0.15625 },\n { x: 0.65625, y: 0.15625 },\n { x: 0.65625, y: 0.15625 },\n { x: 0.71875, y: 0.15625 },\n { x: 0.71875, y: 0.15625 },\n { x: 0.78125, y: 0.15625 },\n { x: 0.78125, y: 0.15625 },\n { x: 0.84375, y: 0.15625 },\n { x: 0.84375, y: 0.15625 },\n { x: 0.90625, y: 0.15625 },\n { x: 0.90625, y: 0.15625 },\n { x: 0.96875, y: 0.15625 },\n { x: 0.96875, y: 0.15625 },\n { x: 0.03125, y: 0.21875 },\n { x: 0.03125, y: 0.21875 },\n { x: 0.09375, y: 0.21875 },\n { x: 0.09375, y: 0.21875 },\n { x: 0.15625, y: 0.21875 },\n { x: 0.15625, y: 0.21875 },\n { x: 0.21875, y: 0.21875 },\n { x: 0.21875, y: 0.21875 },\n { x: 0.28125, y: 0.21875 },\n { x: 0.28125, y: 0.21875 },\n { x: 0.34375, y: 0.21875 },\n { x: 0.34375, y: 0.21875 },\n { x: 0.40625, y: 0.21875 },\n { x: 0.40625, y: 0.21875 },\n { x: 0.46875, y: 0.21875 },\n { x: 0.46875, y: 0.21875 },\n { x: 0.53125, y: 0.21875 },\n { x: 0.53125, y: 0.21875 },\n { x: 0.59375, y: 0.21875 },\n { x: 0.59375, y: 0.21875 },\n { x: 0.65625, y: 0.21875 },\n { x: 0.65625, y: 0.21875 },\n { x: 0.71875, y: 0.21875 },\n { x: 0.71875, y: 0.21875 },\n { x: 0.78125, y: 0.21875 },\n { x: 0.78125, y: 0.21875 },\n { x: 0.84375, y: 0.21875 },\n { x: 0.84375, y: 0.21875 },\n { x: 0.90625, y: 0.21875 },\n { x: 0.90625, y: 0.21875 },\n { x: 0.96875, y: 0.21875 },\n { x: 0.96875, y: 0.21875 },\n { x: 0.03125, y: 0.28125 },\n { x: 0.03125, y: 0.28125 },\n { x: 0.09375, y: 0.28125 },\n { x: 0.09375, y: 0.28125 },\n { x: 0.15625, y: 0.28125 },\n { x: 0.15625, y: 0.28125 },\n { x: 0.21875, y: 0.28125 },\n { x: 0.21875, y: 0.28125 },\n { x: 0.28125, y: 0.28125 },\n { x: 0.28125, y: 0.28125 },\n { x: 0.34375, y: 0.28125 },\n { x: 0.34375, y: 0.28125 },\n { x: 0.40625, y: 0.28125 },\n { x: 0.40625, y: 0.28125 },\n { x: 0.46875, y: 0.28125 },\n { x: 0.46875, y: 0.28125 },\n { x: 0.53125, y: 0.28125 },\n { x: 0.53125, y: 0.28125 },\n { x: 0.59375, y: 0.28125 },\n { x: 0.59375, y: 0.28125 },\n { x: 0.65625, y: 0.28125 },\n { x: 0.65625, y: 0.28125 },\n { x: 0.71875, y: 0.28125 },\n { x: 0.71875, y: 0.28125 },\n { x: 0.78125, y: 0.28125 },\n { x: 0.78125, y: 0.28125 },\n { x: 0.84375, y: 0.28125 },\n { x: 0.84375, y: 0.28125 },\n { x: 0.90625, y: 0.28125 },\n { x: 0.90625, y: 0.28125 },\n { x: 0.96875, y: 0.28125 },\n { x: 0.96875, y: 0.28125 },\n { x: 0.03125, y: 0.34375 },\n { x: 0.03125, y: 0.34375 },\n { x: 0.09375, y: 0.34375 },\n { x: 0.09375, y: 0.34375 },\n { x: 0.15625, y: 0.34375 },\n { x: 0.15625, y: 0.34375 },\n { x: 0.21875, y: 0.34375 },\n { x: 0.21875, y: 0.34375 },\n { x: 0.28125, y: 0.34375 },\n { x: 0.28125, y: 0.34375 },\n { x: 0.34375, y: 0.34375 },\n { x: 0.34375, y: 0.34375 },\n { x: 0.40625, y: 0.34375 },\n { x: 0.40625, y: 0.34375 },\n { x: 0.46875, y: 0.34375 },\n { x: 0.46875, y: 0.34375 },\n { x: 0.53125, y: 0.34375 },\n { x: 0.53125, y: 0.34375 },\n { x: 0.59375, y: 0.34375 },\n { x: 0.59375, y: 0.34375 },\n { x: 0.65625, y: 0.34375 },\n { x: 0.65625, y: 0.34375 },\n { x: 0.71875, y: 0.34375 },\n { x: 0.71875, y: 0.34375 },\n { x: 0.78125, y: 0.34375 },\n { x: 0.78125, y: 0.34375 },\n { x: 0.84375, y: 0.34375 },\n { x: 0.84375, y: 0.34375 },\n { x: 0.90625, y: 0.34375 },\n { x: 0.90625, y: 0.34375 },\n { x: 0.96875, y: 0.34375 },\n { x: 0.96875, y: 0.34375 },\n { x: 0.03125, y: 0.40625 },\n { x: 0.03125, y: 0.40625 },\n { x: 0.09375, y: 0.40625 },\n { x: 0.09375, y: 0.40625 },\n { x: 0.15625, y: 0.40625 },\n { x: 0.15625, y: 0.40625 },\n { x: 0.21875, y: 0.40625 },\n { x: 0.21875, y: 0.40625 },\n { x: 0.28125, y: 0.40625 },\n { x: 0.28125, y: 0.40625 },\n { x: 0.34375, y: 0.40625 },\n { x: 0.34375, y: 0.40625 },\n { x: 0.40625, y: 0.40625 },\n { x: 0.40625, y: 0.40625 },\n { x: 0.46875, y: 0.40625 },\n { x: 0.46875, y: 0.40625 },\n { x: 0.53125, y: 0.40625 },\n { x: 0.53125, y: 0.40625 },\n { x: 0.59375, y: 0.40625 },\n { x: 0.59375, y: 0.40625 },\n { x: 0.65625, y: 0.40625 },\n { x: 0.65625, y: 0.40625 },\n { x: 0.71875, y: 0.40625 },\n { x: 0.71875, y: 0.40625 },\n { x: 0.78125, y: 0.40625 },\n { x: 0.78125, y: 0.40625 },\n { x: 0.84375, y: 0.40625 },\n { x: 0.84375, y: 0.40625 },\n { x: 0.90625, y: 0.40625 },\n { x: 0.90625, y: 0.40625 },\n { x: 0.96875, y: 0.40625 },\n { x: 0.96875, y: 0.40625 },\n { x: 0.03125, y: 0.46875 },\n { x: 0.03125, y: 0.46875 },\n { x: 0.09375, y: 0.46875 },\n { x: 0.09375, y: 0.46875 },\n { x: 0.15625, y: 0.46875 },\n { x: 0.15625, y: 0.46875 },\n { x: 0.21875, y: 0.46875 },\n { x: 0.21875, y: 0.46875 },\n { x: 0.28125, y: 0.46875 },\n { x: 0.28125, y: 0.46875 },\n { x: 0.34375, y: 0.46875 },\n { x: 0.34375, y: 0.46875 },\n { x: 0.40625, y: 0.46875 },\n { x: 0.40625, y: 0.46875 },\n { x: 0.46875, y: 0.46875 },\n { x: 0.46875, y: 0.46875 },\n { x: 0.53125, y: 0.46875 },\n { x: 0.53125, y: 0.46875 },\n { x: 0.59375, y: 0.46875 },\n { x: 0.59375, y: 0.46875 },\n { x: 0.65625, y: 0.46875 },\n { x: 0.65625, y: 0.46875 },\n { x: 0.71875, y: 0.46875 },\n { x: 0.71875, y: 0.46875 },\n { x: 0.78125, y: 0.46875 },\n { x: 0.78125, y: 0.46875 },\n { x: 0.84375, y: 0.46875 },\n { x: 0.84375, y: 0.46875 },\n { x: 0.90625, y: 0.46875 },\n { x: 0.90625, y: 0.46875 },\n { x: 0.96875, y: 0.46875 },\n { x: 0.96875, y: 0.46875 },\n { x: 0.03125, y: 0.53125 },\n { x: 0.03125, y: 0.53125 },\n { x: 0.09375, y: 0.53125 },\n { x: 0.09375, y: 0.53125 },\n { x: 0.15625, y: 0.53125 },\n { x: 0.15625, y: 0.53125 },\n { x: 0.21875, y: 0.53125 },\n { x: 0.21875, y: 0.53125 },\n { x: 0.28125, y: 0.53125 },\n { x: 0.28125, y: 0.53125 },\n { x: 0.34375, y: 0.53125 },\n { x: 0.34375, y: 0.53125 },\n { x: 0.40625, y: 0.53125 },\n { x: 0.40625, y: 0.53125 },\n { x: 0.46875, y: 0.53125 },\n { x: 0.46875, y: 0.53125 },\n { x: 0.53125, y: 0.53125 },\n { x: 0.53125, y: 0.53125 },\n { x: 0.59375, y: 0.53125 },\n { x: 0.59375, y: 0.53125 },\n { x: 0.65625, y: 0.53125 },\n { x: 0.65625, y: 0.53125 },\n { x: 0.71875, y: 0.53125 },\n { x: 0.71875, y: 0.53125 },\n { x: 0.78125, y: 0.53125 },\n { x: 0.78125, y: 0.53125 },\n { x: 0.84375, y: 0.53125 },\n { x: 0.84375, y: 0.53125 },\n { x: 0.90625, y: 0.53125 },\n { x: 0.90625, y: 0.53125 },\n { x: 0.96875, y: 0.53125 },\n { x: 0.96875, y: 0.53125 },\n { x: 0.03125, y: 0.59375 },\n { x: 0.03125, y: 0.59375 },\n { x: 0.09375, y: 0.59375 },\n { x: 0.09375, y: 0.59375 },\n { x: 0.15625, y: 0.59375 },\n { x: 0.15625, y: 0.59375 },\n { x: 0.21875, y: 0.59375 },\n { x: 0.21875, y: 0.59375 },\n { x: 0.28125, y: 0.59375 },\n { x: 0.28125, y: 0.59375 },\n { x: 0.34375, y: 0.59375 },\n { x: 0.34375, y: 0.59375 },\n { x: 0.40625, y: 0.59375 },\n { x: 0.40625, y: 0.59375 },\n { x: 0.46875, y: 0.59375 },\n { x: 0.46875, y: 0.59375 },\n { x: 0.53125, y: 0.59375 },\n { x: 0.53125, y: 0.59375 },\n { x: 0.59375, y: 0.59375 },\n { x: 0.59375, y: 0.59375 },\n { x: 0.65625, y: 0.59375 },\n { x: 0.65625, y: 0.59375 },\n { x: 0.71875, y: 0.59375 },\n { x: 0.71875, y: 0.59375 },\n { x: 0.78125, y: 0.59375 },\n { x: 0.78125, y: 0.59375 },\n { x: 0.84375, y: 0.59375 },\n { x: 0.84375, y: 0.59375 },\n { x: 0.90625, y: 0.59375 },\n { x: 0.90625, y: 0.59375 },\n { x: 0.96875, y: 0.59375 },\n { x: 0.96875, y: 0.59375 },\n { x: 0.03125, y: 0.65625 },\n { x: 0.03125, y: 0.65625 },\n { x: 0.09375, y: 0.65625 },\n { x: 0.09375, y: 0.65625 },\n { x: 0.15625, y: 0.65625 },\n { x: 0.15625, y: 0.65625 },\n { x: 0.21875, y: 0.65625 },\n { x: 0.21875, y: 0.65625 },\n { x: 0.28125, y: 0.65625 },\n { x: 0.28125, y: 0.65625 },\n { x: 0.34375, y: 0.65625 },\n { x: 0.34375, y: 0.65625 },\n { x: 0.40625, y: 0.65625 },\n { x: 0.40625, y: 0.65625 },\n { x: 0.46875, y: 0.65625 },\n { x: 0.46875, y: 0.65625 },\n { x: 0.53125, y: 0.65625 },\n { x: 0.53125, y: 0.65625 },\n { x: 0.59375, y: 0.65625 },\n { x: 0.59375, y: 0.65625 },\n { x: 0.65625, y: 0.65625 },\n { x: 0.65625, y: 0.65625 },\n { x: 0.71875, y: 0.65625 },\n { x: 0.71875, y: 0.65625 },\n { x: 0.78125, y: 0.65625 },\n { x: 0.78125, y: 0.65625 },\n { x: 0.84375, y: 0.65625 },\n { x: 0.84375, y: 0.65625 },\n { x: 0.90625, y: 0.65625 },\n { x: 0.90625, y: 0.65625 },\n { x: 0.96875, y: 0.65625 },\n { x: 0.96875, y: 0.65625 },\n { x: 0.03125, y: 0.71875 },\n { x: 0.03125, y: 0.71875 },\n { x: 0.09375, y: 0.71875 },\n { x: 0.09375, y: 0.71875 },\n { x: 0.15625, y: 0.71875 },\n { x: 0.15625, y: 0.71875 },\n { x: 0.21875, y: 0.71875 },\n { x: 0.21875, y: 0.71875 },\n { x: 0.28125, y: 0.71875 },\n { x: 0.28125, y: 0.71875 },\n { x: 0.34375, y: 0.71875 },\n { x: 0.34375, y: 0.71875 },\n { x: 0.40625, y: 0.71875 },\n { x: 0.40625, y: 0.71875 },\n { x: 0.46875, y: 0.71875 },\n { x: 0.46875, y: 0.71875 },\n { x: 0.53125, y: 0.71875 },\n { x: 0.53125, y: 0.71875 },\n { x: 0.59375, y: 0.71875 },\n { x: 0.59375, y: 0.71875 },\n { x: 0.65625, y: 0.71875 },\n { x: 0.65625, y: 0.71875 },\n { x: 0.71875, y: 0.71875 },\n { x: 0.71875, y: 0.71875 },\n { x: 0.78125, y: 0.71875 },\n { x: 0.78125, y: 0.71875 },\n { x: 0.84375, y: 0.71875 },\n { x: 0.84375, y: 0.71875 },\n { x: 0.90625, y: 0.71875 },\n { x: 0.90625, y: 0.71875 },\n { x: 0.96875, y: 0.71875 },\n { x: 0.96875, y: 0.71875 },\n { x: 0.03125, y: 0.78125 },\n { x: 0.03125, y: 0.78125 },\n { x: 0.09375, y: 0.78125 },\n { x: 0.09375, y: 0.78125 },\n { x: 0.15625, y: 0.78125 },\n { x: 0.15625, y: 0.78125 },\n { x: 0.21875, y: 0.78125 },\n { x: 0.21875, y: 0.78125 },\n { x: 0.28125, y: 0.78125 },\n { x: 0.28125, y: 0.78125 },\n { x: 0.34375, y: 0.78125 },\n { x: 0.34375, y: 0.78125 },\n { x: 0.40625, y: 0.78125 },\n { x: 0.40625, y: 0.78125 },\n { x: 0.46875, y: 0.78125 },\n { x: 0.46875, y: 0.78125 },\n { x: 0.53125, y: 0.78125 },\n { x: 0.53125, y: 0.78125 },\n { x: 0.59375, y: 0.78125 },\n { x: 0.59375, y: 0.78125 },\n { x: 0.65625, y: 0.78125 },\n { x: 0.65625, y: 0.78125 },\n { x: 0.71875, y: 0.78125 },\n { x: 0.71875, y: 0.78125 },\n { x: 0.78125, y: 0.78125 },\n { x: 0.78125, y: 0.78125 },\n { x: 0.84375, y: 0.78125 },\n { x: 0.84375, y: 0.78125 },\n { x: 0.90625, y: 0.78125 },\n { x: 0.90625, y: 0.78125 },\n { x: 0.96875, y: 0.78125 },\n { x: 0.96875, y: 0.78125 },\n { x: 0.03125, y: 0.84375 },\n { x: 0.03125, y: 0.84375 },\n { x: 0.09375, y: 0.84375 },\n { x: 0.09375, y: 0.84375 },\n { x: 0.15625, y: 0.84375 },\n { x: 0.15625, y: 0.84375 },\n { x: 0.21875, y: 0.84375 },\n { x: 0.21875, y: 0.84375 },\n { x: 0.28125, y: 0.84375 },\n { x: 0.28125, y: 0.84375 },\n { x: 0.34375, y: 0.84375 },\n { x: 0.34375, y: 0.84375 },\n { x: 0.40625, y: 0.84375 },\n { x: 0.40625, y: 0.84375 },\n { x: 0.46875, y: 0.84375 },\n { x: 0.46875, y: 0.84375 },\n { x: 0.53125, y: 0.84375 },\n { x: 0.53125, y: 0.84375 },\n { x: 0.59375, y: 0.84375 },\n { x: 0.59375, y: 0.84375 },\n { x: 0.65625, y: 0.84375 },\n { x: 0.65625, y: 0.84375 },\n { x: 0.71875, y: 0.84375 },\n { x: 0.71875, y: 0.84375 },\n { x: 0.78125, y: 0.84375 },\n { x: 0.78125, y: 0.84375 },\n { x: 0.84375, y: 0.84375 },\n { x: 0.84375, y: 0.84375 },\n { x: 0.90625, y: 0.84375 },\n { x: 0.90625, y: 0.84375 },\n { x: 0.96875, y: 0.84375 },\n { x: 0.96875, y: 0.84375 },\n { x: 0.03125, y: 0.90625 },\n { x: 0.03125, y: 0.90625 },\n { x: 0.09375, y: 0.90625 },\n { x: 0.09375, y: 0.90625 },\n { x: 0.15625, y: 0.90625 },\n { x: 0.15625, y: 0.90625 },\n { x: 0.21875, y: 0.90625 },\n { x: 0.21875, y: 0.90625 },\n { x: 0.28125, y: 0.90625 },\n { x: 0.28125, y: 0.90625 },\n { x: 0.34375, y: 0.90625 },\n { x: 0.34375, y: 0.90625 },\n { x: 0.40625, y: 0.90625 },\n { x: 0.40625, y: 0.90625 },\n { x: 0.46875, y: 0.90625 },\n { x: 0.46875, y: 0.90625 },\n { x: 0.53125, y: 0.90625 },\n { x: 0.53125, y: 0.90625 },\n { x: 0.59375, y: 0.90625 },\n { x: 0.59375, y: 0.90625 },\n { x: 0.65625, y: 0.90625 },\n { x: 0.65625, y: 0.90625 },\n { x: 0.71875, y: 0.90625 },\n { x: 0.71875, y: 0.90625 },\n { x: 0.78125, y: 0.90625 },\n { x: 0.78125, y: 0.90625 },\n { x: 0.84375, y: 0.90625 },\n { x: 0.84375, y: 0.90625 },\n { x: 0.90625, y: 0.90625 },\n { x: 0.90625, y: 0.90625 },\n { x: 0.96875, y: 0.90625 },\n { x: 0.96875, y: 0.90625 },\n { x: 0.03125, y: 0.96875 },\n { x: 0.03125, y: 0.96875 },\n { x: 0.09375, y: 0.96875 },\n { x: 0.09375, y: 0.96875 },\n { x: 0.15625, y: 0.96875 },\n { x: 0.15625, y: 0.96875 },\n { x: 0.21875, y: 0.96875 },\n { x: 0.21875, y: 0.96875 },\n { x: 0.28125, y: 0.96875 },\n { x: 0.28125, y: 0.96875 },\n { x: 0.34375, y: 0.96875 },\n { x: 0.34375, y: 0.96875 },\n { x: 0.40625, y: 0.96875 },\n { x: 0.40625, y: 0.96875 },\n { x: 0.46875, y: 0.96875 },\n { x: 0.46875, y: 0.96875 },\n { x: 0.53125, y: 0.96875 },\n { x: 0.53125, y: 0.96875 },\n { x: 0.59375, y: 0.96875 },\n { x: 0.59375, y: 0.96875 },\n { x: 0.65625, y: 0.96875 },\n { x: 0.65625, y: 0.96875 },\n { x: 0.71875, y: 0.96875 },\n { x: 0.71875, y: 0.96875 },\n { x: 0.78125, y: 0.96875 },\n { x: 0.78125, y: 0.96875 },\n { x: 0.84375, y: 0.96875 },\n { x: 0.84375, y: 0.96875 },\n { x: 0.90625, y: 0.96875 },\n { x: 0.90625, y: 0.96875 },\n { x: 0.96875, y: 0.96875 },\n { x: 0.96875, y: 0.96875 },\n { x: 0.0625, y: 0.0625 },\n { x: 0.0625, y: 0.0625 },\n { x: 0.0625, y: 0.0625 },\n { x: 0.0625, y: 0.0625 },\n { x: 0.0625, y: 0.0625 },\n { x: 0.0625, y: 0.0625 },\n { x: 0.1875, y: 0.0625 },\n { x: 0.1875, y: 0.0625 },\n { x: 0.1875, y: 0.0625 },\n { x: 0.1875, y: 0.0625 },\n { x: 0.1875, y: 0.0625 },\n { x: 0.1875, y: 0.0625 },\n { x: 0.3125, y: 0.0625 },\n { x: 0.3125, y: 0.0625 },\n { x: 0.3125, y: 0.0625 },\n { x: 0.3125, y: 0.0625 },\n { x: 0.3125, y: 0.0625 },\n { x: 0.3125, y: 0.0625 },\n { x: 0.4375, y: 0.0625 },\n { x: 0.4375, y: 0.0625 },\n { x: 0.4375, y: 0.0625 },\n { x: 0.4375, y: 0.0625 },\n { x: 0.4375, y: 0.0625 },\n { x: 0.4375, y: 0.0625 },\n { x: 0.5625, y: 0.0625 },\n { x: 0.5625, y: 0.0625 },\n { x: 0.5625, y: 0.0625 },\n { x: 0.5625, y: 0.0625 },\n { x: 0.5625, y: 0.0625 },\n { x: 0.5625, y: 0.0625 },\n { x: 0.6875, y: 0.0625 },\n { x: 0.6875, y: 0.0625 },\n { x: 0.6875, y: 0.0625 },\n { x: 0.6875, y: 0.0625 },\n { x: 0.6875, y: 0.0625 },\n { x: 0.6875, y: 0.0625 },\n { x: 0.8125, y: 0.0625 },\n { x: 0.8125, y: 0.0625 },\n { x: 0.8125, y: 0.0625 },\n { x: 0.8125, y: 0.0625 },\n { x: 0.8125, y: 0.0625 },\n { x: 0.8125, y: 0.0625 },\n { x: 0.9375, y: 0.0625 },\n { x: 0.9375, y: 0.0625 },\n { x: 0.9375, y: 0.0625 },\n { x: 0.9375, y: 0.0625 },\n { x: 0.9375, y: 0.0625 },\n { x: 0.9375, y: 0.0625 },\n { x: 0.0625, y: 0.1875 },\n { x: 0.0625, y: 0.1875 },\n { x: 0.0625, y: 0.1875 },\n { x: 0.0625, y: 0.1875 },\n { x: 0.0625, y: 0.1875 },\n { x: 0.0625, y: 0.1875 },\n { x: 0.1875, y: 0.1875 },\n { x: 0.1875, y: 0.1875 },\n { x: 0.1875, y: 0.1875 },\n { x: 0.1875, y: 0.1875 },\n { x: 0.1875, y: 0.1875 },\n { x: 0.1875, y: 0.1875 },\n { x: 0.3125, y: 0.1875 },\n { x: 0.3125, y: 0.1875 },\n { x: 0.3125, y: 0.1875 },\n { x: 0.3125, y: 0.1875 },\n { x: 0.3125, y: 0.1875 },\n { x: 0.3125, y: 0.1875 },\n { x: 0.4375, y: 0.1875 },\n { x: 0.4375, y: 0.1875 },\n { x: 0.4375, y: 0.1875 },\n { x: 0.4375, y: 0.1875 },\n { x: 0.4375, y: 0.1875 },\n { x: 0.4375, y: 0.1875 },\n { x: 0.5625, y: 0.1875 },\n { x: 0.5625, y: 0.1875 },\n { x: 0.5625, y: 0.1875 },\n { x: 0.5625, y: 0.1875 },\n { x: 0.5625, y: 0.1875 },\n { x: 0.5625, y: 0.1875 },\n { x: 0.6875, y: 0.1875 },\n { x: 0.6875, y: 0.1875 },\n { x: 0.6875, y: 0.1875 },\n { x: 0.6875, y: 0.1875 },\n { x: 0.6875, y: 0.1875 },\n { x: 0.6875, y: 0.1875 },\n { x: 0.8125, y: 0.1875 },\n { x: 0.8125, y: 0.1875 },\n { x: 0.8125, y: 0.1875 },\n { x: 0.8125, y: 0.1875 },\n { x: 0.8125, y: 0.1875 },\n { x: 0.8125, y: 0.1875 },\n { x: 0.9375, y: 0.1875 },\n { x: 0.9375, y: 0.1875 },\n { x: 0.9375, y: 0.1875 },\n { x: 0.9375, y: 0.1875 },\n { x: 0.9375, y: 0.1875 },\n { x: 0.9375, y: 0.1875 },\n { x: 0.0625, y: 0.3125 },\n { x: 0.0625, y: 0.3125 },\n { x: 0.0625, y: 0.3125 },\n { x: 0.0625, y: 0.3125 },\n { x: 0.0625, y: 0.3125 },\n { x: 0.0625, y: 0.3125 },\n { x: 0.1875, y: 0.3125 },\n { x: 0.1875, y: 0.3125 },\n { x: 0.1875, y: 0.3125 },\n { x: 0.1875, y: 0.3125 },\n { x: 0.1875, y: 0.3125 },\n { x: 0.1875, y: 0.3125 },\n { x: 0.3125, y: 0.3125 },\n { x: 0.3125, y: 0.3125 },\n { x: 0.3125, y: 0.3125 },\n { x: 0.3125, y: 0.3125 },\n { x: 0.3125, y: 0.3125 },\n { x: 0.3125, y: 0.3125 },\n { x: 0.4375, y: 0.3125 },\n { x: 0.4375, y: 0.3125 },\n { x: 0.4375, y: 0.3125 },\n { x: 0.4375, y: 0.3125 },\n { x: 0.4375, y: 0.3125 },\n { x: 0.4375, y: 0.3125 },\n { x: 0.5625, y: 0.3125 },\n { x: 0.5625, y: 0.3125 },\n { x: 0.5625, y: 0.3125 },\n { x: 0.5625, y: 0.3125 },\n { x: 0.5625, y: 0.3125 },\n { x: 0.5625, y: 0.3125 },\n { x: 0.6875, y: 0.3125 },\n { x: 0.6875, y: 0.3125 },\n { x: 0.6875, y: 0.3125 },\n { x: 0.6875, y: 0.3125 },\n { x: 0.6875, y: 0.3125 },\n { x: 0.6875, y: 0.3125 },\n { x: 0.8125, y: 0.3125 },\n { x: 0.8125, y: 0.3125 },\n { x: 0.8125, y: 0.3125 },\n { x: 0.8125, y: 0.3125 },\n { x: 0.8125, y: 0.3125 },\n { x: 0.8125, y: 0.3125 },\n { x: 0.9375, y: 0.3125 },\n { x: 0.9375, y: 0.3125 },\n { x: 0.9375, y: 0.3125 },\n { x: 0.9375, y: 0.3125 },\n { x: 0.9375, y: 0.3125 },\n { x: 0.9375, y: 0.3125 },\n { x: 0.0625, y: 0.4375 },\n { x: 0.0625, y: 0.4375 },\n { x: 0.0625, y: 0.4375 },\n { x: 0.0625, y: 0.4375 },\n { x: 0.0625, y: 0.4375 },\n { x: 0.0625, y: 0.4375 },\n { x: 0.1875, y: 0.4375 },\n { x: 0.1875, y: 0.4375 },\n { x: 0.1875, y: 0.4375 },\n { x: 0.1875, y: 0.4375 },\n { x: 0.1875, y: 0.4375 },\n { x: 0.1875, y: 0.4375 },\n { x: 0.3125, y: 0.4375 },\n { x: 0.3125, y: 0.4375 },\n { x: 0.3125, y: 0.4375 },\n { x: 0.3125, y: 0.4375 },\n { x: 0.3125, y: 0.4375 },\n { x: 0.3125, y: 0.4375 },\n { x: 0.4375, y: 0.4375 },\n { x: 0.4375, y: 0.4375 },\n { x: 0.4375, y: 0.4375 },\n { x: 0.4375, y: 0.4375 },\n { x: 0.4375, y: 0.4375 },\n { x: 0.4375, y: 0.4375 },\n { x: 0.5625, y: 0.4375 },\n { x: 0.5625, y: 0.4375 },\n { x: 0.5625, y: 0.4375 },\n { x: 0.5625, y: 0.4375 },\n { x: 0.5625, y: 0.4375 },\n { x: 0.5625, y: 0.4375 },\n { x: 0.6875, y: 0.4375 },\n { x: 0.6875, y: 0.4375 },\n { x: 0.6875, y: 0.4375 },\n { x: 0.6875, y: 0.4375 },\n { x: 0.6875, y: 0.4375 },\n { x: 0.6875, y: 0.4375 },\n { x: 0.8125, y: 0.4375 },\n { x: 0.8125, y: 0.4375 },\n { x: 0.8125, y: 0.4375 },\n { x: 0.8125, y: 0.4375 },\n { x: 0.8125, y: 0.4375 },\n { x: 0.8125, y: 0.4375 },\n { x: 0.9375, y: 0.4375 },\n { x: 0.9375, y: 0.4375 },\n { x: 0.9375, y: 0.4375 },\n { x: 0.9375, y: 0.4375 },\n { x: 0.9375, y: 0.4375 },\n { x: 0.9375, y: 0.4375 },\n { x: 0.0625, y: 0.5625 },\n { x: 0.0625, y: 0.5625 },\n { x: 0.0625, y: 0.5625 },\n { x: 0.0625, y: 0.5625 },\n { x: 0.0625, y: 0.5625 },\n { x: 0.0625, y: 0.5625 },\n { x: 0.1875, y: 0.5625 },\n { x: 0.1875, y: 0.5625 },\n { x: 0.1875, y: 0.5625 },\n { x: 0.1875, y: 0.5625 },\n { x: 0.1875, y: 0.5625 },\n { x: 0.1875, y: 0.5625 },\n { x: 0.3125, y: 0.5625 },\n { x: 0.3125, y: 0.5625 },\n { x: 0.3125, y: 0.5625 },\n { x: 0.3125, y: 0.5625 },\n { x: 0.3125, y: 0.5625 },\n { x: 0.3125, y: 0.5625 },\n { x: 0.4375, y: 0.5625 },\n { x: 0.4375, y: 0.5625 },\n { x: 0.4375, y: 0.5625 },\n { x: 0.4375, y: 0.5625 },\n { x: 0.4375, y: 0.5625 },\n { x: 0.4375, y: 0.5625 },\n { x: 0.5625, y: 0.5625 },\n { x: 0.5625, y: 0.5625 },\n { x: 0.5625, y: 0.5625 },\n { x: 0.5625, y: 0.5625 },\n { x: 0.5625, y: 0.5625 },\n { x: 0.5625, y: 0.5625 },\n { x: 0.6875, y: 0.5625 },\n { x: 0.6875, y: 0.5625 },\n { x: 0.6875, y: 0.5625 },\n { x: 0.6875, y: 0.5625 },\n { x: 0.6875, y: 0.5625 },\n { x: 0.6875, y: 0.5625 },\n { x: 0.8125, y: 0.5625 },\n { x: 0.8125, y: 0.5625 },\n { x: 0.8125, y: 0.5625 },\n { x: 0.8125, y: 0.5625 },\n { x: 0.8125, y: 0.5625 },\n { x: 0.8125, y: 0.5625 },\n { x: 0.9375, y: 0.5625 },\n { x: 0.9375, y: 0.5625 },\n { x: 0.9375, y: 0.5625 },\n { x: 0.9375, y: 0.5625 },\n { x: 0.9375, y: 0.5625 },\n { x: 0.9375, y: 0.5625 },\n { x: 0.0625, y: 0.6875 },\n { x: 0.0625, y: 0.6875 },\n { x: 0.0625, y: 0.6875 },\n { x: 0.0625, y: 0.6875 },\n { x: 0.0625, y: 0.6875 },\n { x: 0.0625, y: 0.6875 },\n { x: 0.1875, y: 0.6875 },\n { x: 0.1875, y: 0.6875 },\n { x: 0.1875, y: 0.6875 },\n { x: 0.1875, y: 0.6875 },\n { x: 0.1875, y: 0.6875 },\n { x: 0.1875, y: 0.6875 },\n { x: 0.3125, y: 0.6875 },\n { x: 0.3125, y: 0.6875 },\n { x: 0.3125, y: 0.6875 },\n { x: 0.3125, y: 0.6875 },\n { x: 0.3125, y: 0.6875 },\n { x: 0.3125, y: 0.6875 },\n { x: 0.4375, y: 0.6875 },\n { x: 0.4375, y: 0.6875 },\n { x: 0.4375, y: 0.6875 },\n { x: 0.4375, y: 0.6875 },\n { x: 0.4375, y: 0.6875 },\n { x: 0.4375, y: 0.6875 },\n { x: 0.5625, y: 0.6875 },\n { x: 0.5625, y: 0.6875 },\n { x: 0.5625, y: 0.6875 },\n { x: 0.5625, y: 0.6875 },\n { x: 0.5625, y: 0.6875 },\n { x: 0.5625, y: 0.6875 },\n { x: 0.6875, y: 0.6875 },\n { x: 0.6875, y: 0.6875 },\n { x: 0.6875, y: 0.6875 },\n { x: 0.6875, y: 0.6875 },\n { x: 0.6875, y: 0.6875 },\n { x: 0.6875, y: 0.6875 },\n { x: 0.8125, y: 0.6875 },\n { x: 0.8125, y: 0.6875 },\n { x: 0.8125, y: 0.6875 },\n { x: 0.8125, y: 0.6875 },\n { x: 0.8125, y: 0.6875 },\n { x: 0.8125, y: 0.6875 },\n { x: 0.9375, y: 0.6875 },\n { x: 0.9375, y: 0.6875 },\n { x: 0.9375, y: 0.6875 },\n { x: 0.9375, y: 0.6875 },\n { x: 0.9375, y: 0.6875 },\n { x: 0.9375, y: 0.6875 },\n { x: 0.0625, y: 0.8125 },\n { x: 0.0625, y: 0.8125 },\n { x: 0.0625, y: 0.8125 },\n { x: 0.0625, y: 0.8125 },\n { x: 0.0625, y: 0.8125 },\n { x: 0.0625, y: 0.8125 },\n { x: 0.1875, y: 0.8125 },\n { x: 0.1875, y: 0.8125 },\n { x: 0.1875, y: 0.8125 },\n { x: 0.1875, y: 0.8125 },\n { x: 0.1875, y: 0.8125 },\n { x: 0.1875, y: 0.8125 },\n { x: 0.3125, y: 0.8125 },\n { x: 0.3125, y: 0.8125 },\n { x: 0.3125, y: 0.8125 },\n { x: 0.3125, y: 0.8125 },\n { x: 0.3125, y: 0.8125 },\n { x: 0.3125, y: 0.8125 },\n { x: 0.4375, y: 0.8125 },\n { x: 0.4375, y: 0.8125 },\n { x: 0.4375, y: 0.8125 },\n { x: 0.4375, y: 0.8125 },\n { x: 0.4375, y: 0.8125 },\n { x: 0.4375, y: 0.8125 },\n { x: 0.5625, y: 0.8125 },\n { x: 0.5625, y: 0.8125 },\n { x: 0.5625, y: 0.8125 },\n { x: 0.5625, y: 0.8125 },\n { x: 0.5625, y: 0.8125 },\n { x: 0.5625, y: 0.8125 },\n { x: 0.6875, y: 0.8125 },\n { x: 0.6875, y: 0.8125 },\n { x: 0.6875, y: 0.8125 },\n { x: 0.6875, y: 0.8125 },\n { x: 0.6875, y: 0.8125 },\n { x: 0.6875, y: 0.8125 },\n { x: 0.8125, y: 0.8125 },\n { x: 0.8125, y: 0.8125 },\n { x: 0.8125, y: 0.8125 },\n { x: 0.8125, y: 0.8125 },\n { x: 0.8125, y: 0.8125 },\n { x: 0.8125, y: 0.8125 },\n { x: 0.9375, y: 0.8125 },\n { x: 0.9375, y: 0.8125 },\n { x: 0.9375, y: 0.8125 },\n { x: 0.9375, y: 0.8125 },\n { x: 0.9375, y: 0.8125 },\n { x: 0.9375, y: 0.8125 },\n { x: 0.0625, y: 0.9375 },\n { x: 0.0625, y: 0.9375 },\n { x: 0.0625, y: 0.9375 },\n { x: 0.0625, y: 0.9375 },\n { x: 0.0625, y: 0.9375 },\n { x: 0.0625, y: 0.9375 },\n { x: 0.1875, y: 0.9375 },\n { x: 0.1875, y: 0.9375 },\n { x: 0.1875, y: 0.9375 },\n { x: 0.1875, y: 0.9375 },\n { x: 0.1875, y: 0.9375 },\n { x: 0.1875, y: 0.9375 },\n { x: 0.3125, y: 0.9375 },\n { x: 0.3125, y: 0.9375 },\n { x: 0.3125, y: 0.9375 },\n { x: 0.3125, y: 0.9375 },\n { x: 0.3125, y: 0.9375 },\n { x: 0.3125, y: 0.9375 },\n { x: 0.4375, y: 0.9375 },\n { x: 0.4375, y: 0.9375 },\n { x: 0.4375, y: 0.9375 },\n { x: 0.4375, y: 0.9375 },\n { x: 0.4375, y: 0.9375 },\n { x: 0.4375, y: 0.9375 },\n { x: 0.5625, y: 0.9375 },\n { x: 0.5625, y: 0.9375 },\n { x: 0.5625, y: 0.9375 },\n { x: 0.5625, y: 0.9375 },\n { x: 0.5625, y: 0.9375 },\n { x: 0.5625, y: 0.9375 },\n { x: 0.6875, y: 0.9375 },\n { x: 0.6875, y: 0.9375 },\n { x: 0.6875, y: 0.9375 },\n { x: 0.6875, y: 0.9375 },\n { x: 0.6875, y: 0.9375 },\n { x: 0.6875, y: 0.9375 },\n { x: 0.8125, y: 0.9375 },\n { x: 0.8125, y: 0.9375 },\n { x: 0.8125, y: 0.9375 },\n { x: 0.8125, y: 0.9375 },\n { x: 0.8125, y: 0.9375 },\n { x: 0.8125, y: 0.9375 },\n { x: 0.9375, y: 0.9375 },\n { x: 0.9375, y: 0.9375 },\n { x: 0.9375, y: 0.9375 },\n { x: 0.9375, y: 0.9375 },\n { x: 0.9375, y: 0.9375 },\n { x: 0.9375, y: 0.9375 }\n];\n\n// src/hand/handposedetector.ts\nvar HandDetector = class {\n constructor(model23) {\n __publicField(this, \"model\");\n __publicField(this, \"anchors\");\n __publicField(this, \"anchorsTensor\");\n __publicField(this, \"inputSize\");\n __publicField(this, \"inputSizeTensor\");\n __publicField(this, \"doubleInputSizeTensor\");\n var _a2, _b2, _c2, _d2;\n this.model = model23;\n this.anchors = anchors2.map((anchor) => [anchor.x, anchor.y]);\n this.anchorsTensor = Oi(this.anchors);\n this.inputSize = ((_d2 = (_c2 = (_b2 = (_a2 = this == null ? void 0 : this.model) == null ? void 0 : _a2.inputs) == null ? void 0 : _b2[0]) == null ? void 0 : _c2.shape) == null ? void 0 : _d2[2]) || 0;\n this.inputSizeTensor = dr([this.inputSize, this.inputSize]);\n this.doubleInputSizeTensor = dr([this.inputSize * 2, this.inputSize * 2]);\n }\n normalizeBoxes(boxes) {\n const t10 = {};\n t10.boxOffsets = Ke(boxes, [0, 0], [-1, 2]);\n t10.boxSizes = Ke(boxes, [0, 2], [-1, 2]);\n t10.div = He(t10.boxOffsets, this.inputSizeTensor);\n t10.boxCenterPoints = be(t10.div, this.anchorsTensor);\n t10.halfBoxSizes = He(t10.boxSizes, this.doubleInputSizeTensor);\n t10.sub = ke(t10.boxCenterPoints, t10.halfBoxSizes);\n t10.startPoints = ne(t10.sub, this.inputSizeTensor);\n t10.add = be(t10.boxCenterPoints, t10.halfBoxSizes);\n t10.endPoints = ne(t10.add, this.inputSizeTensor);\n const res = fv([t10.startPoints, t10.endPoints], 1);\n Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));\n return res;\n }\n normalizeLandmarks(rawPalmLandmarks, index2) {\n const t10 = {};\n t10.reshape = W(rawPalmLandmarks, [-1, 7, 2]);\n t10.div = He(t10.reshape, this.inputSizeTensor);\n t10.landmarks = be(t10.div, this.anchors[index2] ? this.anchors[index2] : 0);\n const res = ne(t10.landmarks, this.inputSizeTensor);\n Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));\n return res;\n }\n async predict(input, config3) {\n var _a2;\n const t10 = {};\n t10.resize = eK.resizeBilinear(input, [this.inputSize, this.inputSize]);\n t10.div = He(t10.resize, constants.tf127);\n t10.image = ke(t10.div, constants.tf1);\n t10.batched = this.model.execute(t10.image);\n t10.predictions = Up(t10.batched);\n t10.slice = Ke(t10.predictions, [0, 0], [-1, 1]);\n t10.sigmoid = Ws(t10.slice);\n t10.scores = Up(t10.sigmoid);\n const scores = await t10.scores.data();\n t10.boxes = Ke(t10.predictions, [0, 1], [-1, 4]);\n t10.norm = this.normalizeBoxes(t10.boxes);\n t10.nms = await eK.nonMaxSuppressionAsync(t10.norm, t10.scores, 3 * (((_a2 = config3.hand) == null ? void 0 : _a2.maxDetected) || 1), config3.hand.iouThreshold, config3.hand.minConfidence);\n const nms = await t10.nms.array();\n const hands = [];\n for (const index2 of nms) {\n const p = {};\n p.box = Ke(t10.norm, [index2, 0], [1, -1]);\n p.slice = Ke(t10.predictions, [index2, 5], [1, 14]);\n p.norm = this.normalizeLandmarks(p.slice, index2);\n p.palmLandmarks = W(p.norm, [-1, 2]);\n const box = await p.box.data();\n const startPoint = box.slice(0, 2);\n const endPoint = box.slice(2, 4);\n const palmLandmarks = await p.palmLandmarks.array();\n const hand3 = { startPoint, endPoint, palmLandmarks, confidence: scores[index2] };\n const scaled = scaleBoxCoordinates2(hand3, [(input.shape[2] || 1) / this.inputSize, (input.shape[1] || 0) / this.inputSize]);\n hands.push(scaled);\n Object.keys(p).forEach((tensor) => Ot(p[tensor]));\n }\n Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));\n return hands;\n }\n};\n\n// src/hand/handposepipeline.ts\nvar palmBoxEnlargeFactor = 5;\nvar handBoxEnlargeFactor = 1.65;\nvar palmLandmarkIds = [0, 5, 9, 13, 17, 1, 2];\nvar palmLandmarksPalmBase = 0;\nvar palmLandmarksMiddleFingerBase = 2;\nvar lastTime13 = 0;\nvar HandPipeline = class {\n constructor(handDetector, handPoseModel2) {\n __publicField(this, \"handDetector\");\n __publicField(this, \"handPoseModel\");\n __publicField(this, \"inputSize\");\n __publicField(this, \"storedBoxes\");\n __publicField(this, \"skipped\");\n __publicField(this, \"detectedHands\");\n var _a2, _b2, _c2;\n this.handDetector = handDetector;\n this.handPoseModel = handPoseModel2;\n this.inputSize = ((_c2 = (_b2 = (_a2 = this.handPoseModel) == null ? void 0 : _a2.inputs) == null ? void 0 : _b2[0].shape) == null ? void 0 : _c2[2]) || 0;\n this.storedBoxes = [];\n this.skipped = Number.MAX_SAFE_INTEGER;\n this.detectedHands = 0;\n }\n calculateLandmarksBoundingBox(landmarks) {\n const xs2 = landmarks.map((d) => d[0]);\n const ys2 = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs2), Math.min(...ys2)];\n const endPoint = [Math.max(...xs2), Math.max(...ys2)];\n return { startPoint, endPoint };\n }\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => rotatePoint2([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n return enlargeBox2(squarifyBox2(boxAroundPalm), palmBoxEnlargeFactor);\n }\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n const boxAroundHand = enlargeBox2(squarifyBox2(boundingBox), handBoxEnlargeFactor);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < palmLandmarkIds.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[palmLandmarkIds[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = getBoxSize2(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 = buildRotationMatrix2(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = rotatePoint2(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = invertTransformMatrix2(rotationMatrix);\n const boxCenter = [...getBoxCenter2(box2), 1];\n const originalBoxCenter = [\n dot2(boxCenter, inverseRotationMatrix[0]),\n dot2(boxCenter, inverseRotationMatrix[1])\n ];\n return coordsRotated.map((coord) => [\n Math.trunc(coord[0] + originalBoxCenter[0]),\n Math.trunc(coord[1] + originalBoxCenter[1]),\n Math.trunc(coord[2])\n ]);\n }\n async estimateHands(image, config3) {\n let useFreshBox = false;\n let boxes;\n const skipTime = (config3.hand.skipTime || 0) > now() - lastTime13;\n const skipFrame = this.skipped < (config3.hand.skipFrames || 0);\n if (config3.skipAllowed && skipTime && skipFrame) {\n boxes = await this.handDetector.predict(image, config3);\n this.skipped = 0;\n }\n if (config3.skipAllowed)\n this.skipped++;\n if (boxes && boxes.length > 0 && (boxes.length !== this.detectedHands && this.detectedHands !== config3.hand.maxDetected || !config3.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n if (this.storedBoxes.length > 0)\n useFreshBox = true;\n }\n const hands = [];\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox)\n continue;\n if (config3.hand.landmarks) {\n const angle = config3.hand.rotation ? computeRotation2(currentBox.palmLandmarks[palmLandmarksPalmBase], currentBox.palmLandmarks[palmLandmarksMiddleFingerBase]) : 0;\n const palmCenter = getBoxCenter2(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config3.hand.rotation && env.kernels.includes(\"rotatewithoffset\") ? eK.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = buildRotationMatrix2(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = He(croppedInput, constants.tf255);\n Ot(croppedInput);\n Ot(rotatedImage);\n const [confidenceT, keypoints] = this.handPoseModel.execute(handImage);\n lastTime13 = now();\n Ot(handImage);\n const confidence = (await confidenceT.data())[0];\n Ot(confidenceT);\n if (confidence >= config3.hand.minConfidence / 4) {\n const keypointsReshaped = W(keypoints, [-1, 3]);\n const rawCoords = await keypointsReshaped.array();\n Ot(keypoints);\n Ot(keypointsReshaped);\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = { ...nextBoundingBox, confidence };\n const result = {\n landmarks: coords,\n confidence,\n boxConfidence: currentBox.confidence,\n fingerConfidence: confidence,\n box: { topLeft: nextBoundingBox.startPoint, bottomRight: nextBoundingBox.endPoint }\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n Ot(keypoints);\n } else {\n const enlarged = enlargeBox2(squarifyBox2(currentBox), handBoxEnlargeFactor);\n const result = {\n confidence: currentBox.confidence,\n boxConfidence: currentBox.confidence,\n fingerConfidence: 0,\n box: { topLeft: enlarged.startPoint, bottomRight: enlarged.endPoint },\n landmarks: []\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n if (hands.length > config3.hand.maxDetected)\n hands.length = config3.hand.maxDetected;\n return hands;\n }\n};\n\n// src/hand/handpose.ts\nvar meshAnnotations2 = {\n thumb: [1, 2, 3, 4],\n index: [5, 6, 7, 8],\n middle: [9, 10, 11, 12],\n ring: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palm: [0]\n};\nvar handDetectorModel;\nvar handPoseModel;\nvar handPipeline;\nasync function predict14(input, config3) {\n const predictions = await handPipeline.estimateHands(input, config3);\n if (!predictions)\n return [];\n const hands = [];\n for (let i = 0; i < predictions.length; i++) {\n const annotations2 = {};\n if (predictions[i].landmarks) {\n for (const key of Object.keys(meshAnnotations2)) {\n annotations2[key] = meshAnnotations2[key].map((index2) => predictions[i].landmarks[index2]);\n }\n }\n const keypoints = predictions[i].landmarks;\n let box = [Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER, 0, 0];\n let boxRaw = [0, 0, 0, 0];\n if (keypoints && keypoints.length > 0) {\n for (const pt of keypoints) {\n if (pt[0] < box[0])\n box[0] = pt[0];\n if (pt[1] < box[1])\n box[1] = pt[1];\n if (pt[0] > box[2])\n box[2] = pt[0];\n if (pt[1] > box[3])\n box[3] = pt[1];\n }\n box[2] -= box[0];\n box[3] -= box[1];\n boxRaw = [box[0] / (input.shape[2] || 0), box[1] / (input.shape[1] || 0), box[2] / (input.shape[2] || 0), box[3] / (input.shape[1] || 0)];\n } else {\n box = predictions[i].box ? [\n Math.trunc(Math.max(0, predictions[i].box.topLeft[0])),\n Math.trunc(Math.max(0, predictions[i].box.topLeft[1])),\n Math.trunc(Math.min(input.shape[2] || 0, predictions[i].box.bottomRight[0]) - Math.max(0, predictions[i].box.topLeft[0])),\n Math.trunc(Math.min(input.shape[1] || 0, predictions[i].box.bottomRight[1]) - Math.max(0, predictions[i].box.topLeft[1]))\n ] : [0, 0, 0, 0];\n boxRaw = [\n predictions[i].box.topLeft[0] / (input.shape[2] || 0),\n predictions[i].box.topLeft[1] / (input.shape[1] || 0),\n (predictions[i].box.bottomRight[0] - predictions[i].box.topLeft[0]) / (input.shape[2] || 0),\n (predictions[i].box.bottomRight[1] - predictions[i].box.topLeft[1]) / (input.shape[1] || 0)\n ];\n }\n const landmarks = analyze(keypoints);\n hands.push({\n id: i,\n score: Math.round(100 * predictions[i].confidence) / 100,\n boxScore: Math.round(100 * predictions[i].boxConfidence) / 100,\n fingerScore: Math.round(100 * predictions[i].fingerConfidence) / 100,\n label: \"hand\",\n box,\n boxRaw,\n keypoints,\n annotations: annotations2,\n landmarks\n });\n }\n return hands;\n}\nasync function load15(config3) {\n var _a2, _b2;\n if (env.initial) {\n handDetectorModel = null;\n handPoseModel = null;\n }\n if (!handDetectorModel || !handPoseModel) {\n [handDetectorModel, handPoseModel] = await Promise.all([\n config3.hand.enabled ? loadModel((_a2 = config3.hand.detector) == null ? void 0 : _a2.modelPath) : null,\n config3.hand.landmarks ? loadModel((_b2 = config3.hand.skeleton) == null ? void 0 : _b2.modelPath) : null\n ]);\n } else {\n if (config3.debug)\n log(\"cached model:\", handDetectorModel[\"modelUrl\"]);\n if (config3.debug)\n log(\"cached model:\", handPoseModel[\"modelUrl\"]);\n }\n const handDetector = handDetectorModel ? new HandDetector(handDetectorModel) : void 0;\n if (handDetector && handPoseModel)\n handPipeline = new HandPipeline(handDetector, handPoseModel);\n return [handDetectorModel, handPoseModel];\n}\n\n// src/hand/handtrack.ts\nvar models2 = [null, null];\nvar modelOutputNodes = [\"StatefulPartitionedCall/Postprocessor/Slice\", \"StatefulPartitionedCall/Postprocessor/ExpandDims_1\"];\nvar inputSize7 = [[0, 0], [0, 0]];\nvar classes = [\"hand\", \"fist\", \"pinch\", \"point\", \"face\", \"tip\", \"pinchtip\"];\nvar faceIndex = 4;\nvar boxExpandFact = 1.6;\nvar maxDetectorResolution = 512;\nvar detectorExpandFact = 1.4;\nvar skipped13 = Number.MAX_SAFE_INTEGER;\nvar lastTime14 = 0;\nvar outputSize = [0, 0];\nvar cache4 = {\n boxes: [],\n hands: []\n};\nvar fingerMap = {\n /*\n thumb: [0, 1, 2, 3, 4],\n index: [0, 5, 6, 7, 8],\n middle: [0, 9, 10, 11, 12],\n ring: [0, 13, 14, 15, 16],\n pinky: [0, 17, 18, 19, 20],\n palm: [0],\n */\n thumb: [1, 2, 3, 4],\n index: [5, 6, 7, 8],\n middle: [9, 10, 11, 12],\n ring: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n base: [0],\n palm: [0, 17, 13, 9, 5, 1, 0]\n};\nasync function loadDetect2(config3) {\n var _a2;\n if (env.initial)\n models2[0] = null;\n if (!models2[0]) {\n fakeOps([\"tensorlistreserve\", \"enter\", \"tensorlistfromtensor\", \"merge\", \"loopcond\", \"switch\", \"exit\", \"tensorliststack\", \"nextiteration\", \"tensorlistsetitem\", \"tensorlistgetitem\", \"reciprocal\", \"shape\", \"split\", \"where\"], config3);\n models2[0] = await loadModel((_a2 = config3.hand.detector) == null ? void 0 : _a2.modelPath);\n const inputs = models2[0][\"executor\"] ? Object.values(models2[0].modelSignature[\"inputs\"]) : void 0;\n inputSize7[0][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;\n inputSize7[0][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;\n } else if (config3.debug)\n log(\"cached model:\", models2[0][\"modelUrl\"]);\n return models2[0];\n}\nasync function loadSkeleton(config3) {\n var _a2;\n if (env.initial)\n models2[1] = null;\n if (!models2[1]) {\n models2[1] = await loadModel((_a2 = config3.hand.skeleton) == null ? void 0 : _a2.modelPath);\n const inputs = models2[1][\"executor\"] ? Object.values(models2[1].modelSignature[\"inputs\"]) : void 0;\n inputSize7[1][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;\n inputSize7[1][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;\n } else if (config3.debug)\n log(\"cached model:\", models2[1][\"modelUrl\"]);\n return models2[1];\n}\nasync function detectHands(input, config3) {\n const hands = [];\n if (!input || !models2[0])\n return hands;\n const t10 = {};\n const ratio2 = (input.shape[2] || 1) / (input.shape[1] || 1);\n const height = Math.min(Math.round((input.shape[1] || 0) / 8) * 8, maxDetectorResolution);\n const width = Math.round(height * ratio2 / 8) * 8;\n t10.resize = eK.resizeBilinear(input, [height, width]);\n t10.cast = je(t10.resize, \"int32\");\n [t10.rawScores, t10.rawBoxes] = await models2[0].executeAsync(t10.cast, modelOutputNodes);\n t10.boxes = Up(t10.rawBoxes, [0, 2]);\n t10.scores = Up(t10.rawScores, [0]);\n const classScores = so(t10.scores, 1);\n Ot(classScores[faceIndex]);\n classScores.splice(faceIndex, 1);\n t10.filtered = Sr(classScores, 1);\n Ot(classScores);\n t10.max = Gs(t10.filtered, 1);\n t10.argmax = X0(t10.filtered, 1);\n let id2 = 0;\n t10.nms = await eK.nonMaxSuppressionAsync(t10.boxes, t10.max, (config3.hand.maxDetected || 0) + 1, config3.hand.iouThreshold || 0, config3.hand.minConfidence || 1);\n const nms = await t10.nms.data();\n const scores = await t10.max.data();\n const classNum = await t10.argmax.data();\n for (const nmsIndex of Array.from(nms)) {\n const boxSlice = Ke(t10.boxes, nmsIndex, 1);\n const boxYX = await boxSlice.data();\n Ot(boxSlice);\n const boxData = [boxYX[1], boxYX[0], boxYX[3] - boxYX[1], boxYX[2] - boxYX[0]];\n const boxRaw = scale(boxData, detectorExpandFact);\n const boxFull = [Math.trunc(boxData[0] * outputSize[0]), Math.trunc(boxData[1] * outputSize[1]), Math.trunc(boxData[2] * outputSize[0]), Math.trunc(boxData[3] * outputSize[1])];\n const score = scores[nmsIndex];\n const label = classes[classNum[nmsIndex]];\n const hand3 = { id: id2++, score, box: boxFull, boxRaw, label };\n hands.push(hand3);\n }\n Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));\n hands.sort((a, b) => b.score - a.score);\n if (hands.length > (config3.hand.maxDetected || 1))\n hands.length = config3.hand.maxDetected || 1;\n return hands;\n}\nasync function detectFingers(input, h, config3) {\n const hand3 = {\n // initial values inherited from hand detect\n id: h.id,\n score: Math.round(100 * h.score) / 100,\n boxScore: Math.round(100 * h.score) / 100,\n fingerScore: 0,\n box: h.box,\n boxRaw: h.boxRaw,\n label: h.label,\n keypoints: [],\n landmarks: {},\n annotations: {}\n };\n if (input && models2[1] && config3.hand.landmarks && h.score > (config3.hand.minConfidence || 0)) {\n const t10 = {};\n const boxCrop = [h.boxRaw[1], h.boxRaw[0], h.boxRaw[3] + h.boxRaw[1], h.boxRaw[2] + h.boxRaw[0]];\n t10.crop = eK.cropAndResize(input, [boxCrop], [0], [inputSize7[1][0], inputSize7[1][1]], \"bilinear\");\n t10.div = He(t10.crop, constants.tf255);\n [t10.score, t10.keypoints] = models2[1].execute(t10.div, [\"Identity_1\", \"Identity\"]);\n const rawScore = (await t10.score.data())[0];\n const score = (100 - Math.trunc(100 / (1 + Math.exp(rawScore)))) / 100;\n if (score >= (config3.hand.minConfidence || 0)) {\n hand3.fingerScore = score;\n t10.reshaped = W(t10.keypoints, [-1, 3]);\n const coordsData = await t10.reshaped.array();\n const coordsRaw = coordsData.map((kpt4) => [kpt4[0] / inputSize7[1][1], kpt4[1] / inputSize7[1][0], kpt4[2] || 0]);\n const coordsNorm = coordsRaw.map((kpt4) => [kpt4[0] * h.boxRaw[2], kpt4[1] * h.boxRaw[3], kpt4[2] || 0]);\n hand3.keypoints = coordsNorm.map((kpt4) => [outputSize[0] * (kpt4[0] + h.boxRaw[0]), outputSize[1] * (kpt4[1] + h.boxRaw[1]), kpt4[2] || 0]);\n hand3.landmarks = analyze(hand3.keypoints);\n for (const key of Object.keys(fingerMap)) {\n hand3.annotations[key] = fingerMap[key].map((index2) => hand3.landmarks && hand3.keypoints[index2] ? hand3.keypoints[index2] : null);\n }\n }\n Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));\n }\n return hand3;\n}\nasync function predict15(input, config3) {\n var _a2, _b2;\n if (!((_a2 = models2[0]) == null ? void 0 : _a2[\"executor\"]) || !((_b2 = models2[1]) == null ? void 0 : _b2[\"executor\"]) || !models2[0].inputs[0].shape || !models2[1].inputs[0].shape)\n return [];\n outputSize = [input.shape[2] || 0, input.shape[1] || 0];\n skipped13++;\n const skipTime = (config3.hand.skipTime || 0) > now() - lastTime14;\n const skipFrame = skipped13 < (config3.hand.skipFrames || 0);\n if (config3.skipAllowed && skipTime && skipFrame) {\n return cache4.hands;\n }\n return new Promise(async (resolve) => {\n const skipTimeExtended = 3 * (config3.hand.skipTime || 0) > now() - lastTime14;\n const skipFrameExtended = skipped13 < 3 * (config3.hand.skipFrames || 0);\n if (config3.skipAllowed && cache4.hands.length === config3.hand.maxDetected) {\n cache4.hands = await Promise.all(cache4.boxes.map((handBox) => detectFingers(input, handBox, config3)));\n } else if (config3.skipAllowed && skipTimeExtended && skipFrameExtended && cache4.hands.length > 0) {\n cache4.hands = await Promise.all(cache4.boxes.map((handBox) => detectFingers(input, handBox, config3)));\n } else {\n cache4.boxes = await detectHands(input, config3);\n lastTime14 = now();\n cache4.hands = await Promise.all(cache4.boxes.map((handBox) => detectFingers(input, handBox, config3)));\n skipped13 = 0;\n }\n const oldCache = [...cache4.boxes];\n cache4.boxes.length = 0;\n if (config3.cacheSensitivity > 0) {\n for (let i = 0; i < cache4.hands.length; i++) {\n const boxKpt = square(cache4.hands[i].keypoints, outputSize);\n if (boxKpt.box[2] / (input.shape[2] || 1) > 0.05 && boxKpt.box[3] / (input.shape[1] || 1) > 0.05 && cache4.hands[i].fingerScore && cache4.hands[i].fingerScore > (config3.hand.minConfidence || 0)) {\n const boxScale = scale(boxKpt.box, boxExpandFact);\n const boxScaleRaw = scale(boxKpt.boxRaw, boxExpandFact);\n cache4.boxes.push({ ...oldCache[i], box: boxScale, boxRaw: boxScaleRaw });\n }\n }\n }\n for (let i = 0; i < cache4.hands.length; i++) {\n const bbox = calc(cache4.hands[i].keypoints, outputSize);\n cache4.hands[i].box = bbox.box;\n cache4.hands[i].boxRaw = bbox.boxRaw;\n }\n resolve(cache4.hands);\n });\n}\n\n// src/result.ts\nvar empty = (error = null) => ({ face: [], body: [], hand: [], gesture: [], object: [], persons: [], performance: {}, timestamp: 0, width: 0, height: 0, error });\n\n// src/body/movenetcoords.ts\nvar movenetcoords_exports = {};\n__export(movenetcoords_exports, {\n connected: () => connected3,\n horizontal: () => horizontal,\n kpt: () => kpt3,\n relative: () => relative,\n vertical: () => vertical\n});\nvar kpt3 = [\n // used to create part labels\n \"nose\",\n \"leftEye\",\n \"rightEye\",\n \"leftEar\",\n \"rightEar\",\n \"leftShoulder\",\n \"rightShoulder\",\n \"leftElbow\",\n \"rightElbow\",\n \"leftWrist\",\n \"rightWrist\",\n \"leftHip\",\n \"rightHip\",\n \"leftKnee\",\n \"rightKnee\",\n \"leftAnkle\",\n \"rightAnkle\"\n];\nvar horizontal = [\n // used to fix left vs right\n [\"leftEye\", \"rightEye\"],\n [\"leftEar\", \"rightEar\"],\n [\"leftShoulder\", \"rightShoulder\"],\n [\"leftElbow\", \"rightElbow\"],\n [\"leftWrist\", \"rightWrist\"],\n [\"leftHip\", \"rightHip\"],\n [\"leftKnee\", \"rightKnee\"],\n [\"leftAnkle\", \"rightAnkle\"]\n];\nvar vertical = [\n // used to remove unlikely keypoint positions\n [\"leftKnee\", \"leftShoulder\"],\n [\"rightKnee\", \"rightShoulder\"],\n [\"leftAnkle\", \"leftKnee\"],\n [\"rightAnkle\", \"rightKnee\"]\n];\nvar relative = [\n // used to match relative body parts\n [[\"leftHip\", \"rightHip\"], [\"leftShoulder\", \"rightShoulder\"]],\n [[\"leftElbow\", \"rightElbow\"], [\"leftShoulder\", \"rightShoulder\"]]\n];\nvar connected3 = {\n // used to create body outline in annotations\n leftLeg: [\"leftHip\", \"leftKnee\", \"leftAnkle\"],\n rightLeg: [\"rightHip\", \"rightKnee\", \"rightAnkle\"],\n torso: [\"leftShoulder\", \"rightShoulder\", \"rightHip\", \"leftHip\", \"leftShoulder\"],\n leftArm: [\"leftShoulder\", \"leftElbow\", \"leftWrist\"],\n rightArm: [\"rightShoulder\", \"rightElbow\", \"rightWrist\"],\n head: []\n};\n\n// src/util/interpolate.ts\nvar bufferedResult = empty();\nvar interpolateTime = 0;\nfunction calc2(newResult, config3) {\n var _a2, _b2, _c2, _d2, _e, _f2, _g2, _h2, _i2, _j2, _k, _l2, _m2, _n2, _o2, _p2, _q2, _r2, _s2, _t, _u2, _v2, _w2, _x2, _y, _z2;\n const t0 = now();\n if (!newResult)\n return empty();\n const elapsed = Date.now() - newResult.timestamp;\n const bufferedFactor = elapsed < 1e3 ? 8 - Math.log(elapsed + 1) : 1;\n if (newResult.canvas)\n bufferedResult.canvas = newResult.canvas;\n if (newResult.error)\n bufferedResult.error = newResult.error;\n if (!bufferedResult.body || newResult.body.length !== bufferedResult.body.length) {\n bufferedResult.body = JSON.parse(JSON.stringify(newResult.body));\n } else {\n for (let i = 0; i < newResult.body.length; i++) {\n const box = newResult.body[i].box.map((newBoxCoord, j10) => ((bufferedFactor - 1) * bufferedResult.body[i].box[j10] + newBoxCoord) / bufferedFactor);\n const boxRaw = newResult.body[i].boxRaw.map((newBoxCoord, j10) => ((bufferedFactor - 1) * bufferedResult.body[i].boxRaw[j10] + newBoxCoord) / bufferedFactor);\n const keypoints = newResult.body[i].keypoints.map((newKpt, j10) => {\n var _a3, _b3, _c3, _d3, _e2, _f3, _g3, _h3, _i3;\n return {\n score: newKpt.score,\n part: newKpt.part,\n position: [\n bufferedResult.body[i].keypoints[j10] ? ((bufferedFactor - 1) * (bufferedResult.body[i].keypoints[j10].position[0] || 0) + (newKpt.position[0] || 0)) / bufferedFactor : newKpt.position[0],\n bufferedResult.body[i].keypoints[j10] ? ((bufferedFactor - 1) * (bufferedResult.body[i].keypoints[j10].position[1] || 0) + (newKpt.position[1] || 0)) / bufferedFactor : newKpt.position[1],\n bufferedResult.body[i].keypoints[j10] ? ((bufferedFactor - 1) * (bufferedResult.body[i].keypoints[j10].position[2] || 0) + (newKpt.position[2] || 0)) / bufferedFactor : newKpt.position[2]\n ],\n positionRaw: [\n bufferedResult.body[i].keypoints[j10] ? ((bufferedFactor - 1) * (bufferedResult.body[i].keypoints[j10].positionRaw[0] || 0) + (newKpt.positionRaw[0] || 0)) / bufferedFactor : newKpt.positionRaw[0],\n bufferedResult.body[i].keypoints[j10] ? ((bufferedFactor - 1) * (bufferedResult.body[i].keypoints[j10].positionRaw[1] || 0) + (newKpt.positionRaw[1] || 0)) / bufferedFactor : newKpt.positionRaw[1],\n bufferedResult.body[i].keypoints[j10] ? ((bufferedFactor - 1) * (bufferedResult.body[i].keypoints[j10].positionRaw[2] || 0) + (newKpt.positionRaw[2] || 0)) / bufferedFactor : newKpt.positionRaw[2]\n ],\n distance: [\n bufferedResult.body[i].keypoints[j10] ? ((bufferedFactor - 1) * (((_a3 = bufferedResult.body[i].keypoints[j10].distance) == null ? void 0 : _a3[0]) || 0) + (((_b3 = newKpt.distance) == null ? void 0 : _b3[0]) || 0)) / bufferedFactor : (_c3 = newKpt.distance) == null ? void 0 : _c3[0],\n bufferedResult.body[i].keypoints[j10] ? ((bufferedFactor - 1) * (((_d3 = bufferedResult.body[i].keypoints[j10].distance) == null ? void 0 : _d3[1]) || 0) + (((_e2 = newKpt.distance) == null ? void 0 : _e2[1]) || 0)) / bufferedFactor : (_f3 = newKpt.distance) == null ? void 0 : _f3[1],\n bufferedResult.body[i].keypoints[j10] ? ((bufferedFactor - 1) * (((_g3 = bufferedResult.body[i].keypoints[j10].distance) == null ? void 0 : _g3[2]) || 0) + (((_h3 = newKpt.distance) == null ? void 0 : _h3[2]) || 0)) / bufferedFactor : (_i3 = newKpt.distance) == null ? void 0 : _i3[2]\n ]\n };\n });\n const annotations2 = {};\n let coords = { connected: {} };\n if ((_a2 = config3.body.modelPath) == null ? void 0 : _a2.includes(\"efficientpose\"))\n coords = efficientposecoords_exports;\n else if ((_b2 = config3.body.modelPath) == null ? void 0 : _b2.includes(\"blazepose\"))\n coords = blazeposecoords_exports;\n else if ((_c2 = config3.body.modelPath) == null ? void 0 : _c2.includes(\"movenet\"))\n coords = movenetcoords_exports;\n for (const [name, indexes] of Object.entries(coords.connected)) {\n const pt = [];\n for (let j10 = 0; j10 < indexes.length - 1; j10++) {\n const pt0 = keypoints.find((kp2) => kp2.part === indexes[j10]);\n const pt1 = keypoints.find((kp2) => kp2.part === indexes[j10 + 1]);\n if (pt0 && pt1)\n pt.push([pt0.position, pt1.position]);\n }\n annotations2[name] = pt;\n }\n bufferedResult.body[i] = { ...newResult.body[i], box, boxRaw, keypoints, annotations: annotations2 };\n }\n }\n if (!bufferedResult.hand || newResult.hand.length !== bufferedResult.hand.length) {\n bufferedResult.hand = JSON.parse(JSON.stringify(newResult.hand));\n } else {\n for (let i = 0; i < newResult.hand.length; i++) {\n const box = newResult.hand[i].box.map((b, j10) => ((bufferedFactor - 1) * bufferedResult.hand[i].box[j10] + b) / bufferedFactor);\n const boxRaw = newResult.hand[i].boxRaw.map((b, j10) => ((bufferedFactor - 1) * bufferedResult.hand[i].boxRaw[j10] + b) / bufferedFactor);\n if (bufferedResult.hand[i].keypoints.length !== newResult.hand[i].keypoints.length)\n bufferedResult.hand[i].keypoints = newResult.hand[i].keypoints;\n const keypoints = newResult.hand[i].keypoints && newResult.hand[i].keypoints.length > 0 ? newResult.hand[i].keypoints.map((landmark, j10) => landmark.map((coord, k) => ((bufferedFactor - 1) * (bufferedResult.hand[i].keypoints[j10][k] || 1) + (coord || 0)) / bufferedFactor)) : [];\n let annotations2 = {};\n if (Object.keys(bufferedResult.hand[i].annotations).length !== Object.keys(newResult.hand[i].annotations).length) {\n bufferedResult.hand[i].annotations = newResult.hand[i].annotations;\n annotations2 = bufferedResult.hand[i].annotations;\n } else if (newResult.hand[i].annotations) {\n for (const key of Object.keys(newResult.hand[i].annotations)) {\n annotations2[key] = ((_f2 = (_e = (_d2 = newResult.hand[i]) == null ? void 0 : _d2.annotations) == null ? void 0 : _e[key]) == null ? void 0 : _f2[0]) ? newResult.hand[i].annotations[key].map((val, j10) => val.map((coord, k) => ((bufferedFactor - 1) * bufferedResult.hand[i].annotations[key][j10][k] + coord) / bufferedFactor)) : null;\n }\n }\n bufferedResult.hand[i] = { ...newResult.hand[i], box, boxRaw, keypoints, annotations: annotations2 };\n }\n }\n if (!bufferedResult.face || newResult.face.length !== bufferedResult.face.length) {\n bufferedResult.face = JSON.parse(JSON.stringify(newResult.face));\n } else {\n for (let i = 0; i < newResult.face.length; i++) {\n const box = newResult.face[i].box.map((b, j10) => ((bufferedFactor - 1) * bufferedResult.face[i].box[j10] + b) / bufferedFactor);\n const boxRaw = newResult.face[i].boxRaw.map((b, j10) => ((bufferedFactor - 1) * bufferedResult.face[i].boxRaw[j10] + b) / bufferedFactor);\n let annotations2 = newResult.face[i].annotations;\n if (Object.keys(bufferedResult.face[i].annotations).length !== Object.keys(newResult.face[i].annotations).length) {\n bufferedResult.face[i].annotations = newResult.face[i].annotations;\n annotations2 = bufferedResult.face[i].annotations;\n } else if (newResult.face[i].annotations) {\n for (const key of Object.keys(newResult.face[i].annotations)) {\n annotations2[key] = ((_i2 = (_h2 = (_g2 = newResult.face[i]) == null ? void 0 : _g2.annotations) == null ? void 0 : _h2[key]) == null ? void 0 : _i2[0]) ? newResult.face[i].annotations[key].map((val, j10) => val.map((coord, k) => ((bufferedFactor - 1) * bufferedResult.face[i].annotations[key][j10][k] + coord) / bufferedFactor)) : null;\n }\n }\n if (newResult.face[i].rotation) {\n const rotation = { matrix: [0, 0, 0, 0, 0, 0, 0, 0, 0], angle: { roll: 0, yaw: 0, pitch: 0 }, gaze: { bearing: 0, strength: 0 } };\n rotation.matrix = (_j2 = newResult.face[i].rotation) == null ? void 0 : _j2.matrix;\n rotation.angle = {\n roll: ((bufferedFactor - 1) * (((_l2 = (_k = bufferedResult.face[i].rotation) == null ? void 0 : _k.angle) == null ? void 0 : _l2.roll) || 0) + (((_n2 = (_m2 = newResult.face[i].rotation) == null ? void 0 : _m2.angle) == null ? void 0 : _n2.roll) || 0)) / bufferedFactor,\n yaw: ((bufferedFactor - 1) * (((_p2 = (_o2 = bufferedResult.face[i].rotation) == null ? void 0 : _o2.angle) == null ? void 0 : _p2.yaw) || 0) + (((_r2 = (_q2 = newResult.face[i].rotation) == null ? void 0 : _q2.angle) == null ? void 0 : _r2.yaw) || 0)) / bufferedFactor,\n pitch: ((bufferedFactor - 1) * (((_t = (_s2 = bufferedResult.face[i].rotation) == null ? void 0 : _s2.angle) == null ? void 0 : _t.pitch) || 0) + (((_v2 = (_u2 = newResult.face[i].rotation) == null ? void 0 : _u2.angle) == null ? void 0 : _v2.pitch) || 0)) / bufferedFactor\n };\n rotation.gaze = {\n // not fully correct due projection on circle, also causes wrap-around draw on jump from negative to positive\n bearing: ((bufferedFactor - 1) * (((_w2 = bufferedResult.face[i].rotation) == null ? void 0 : _w2.gaze.bearing) || 0) + (((_x2 = newResult.face[i].rotation) == null ? void 0 : _x2.gaze.bearing) || 0)) / bufferedFactor,\n strength: ((bufferedFactor - 1) * (((_y = bufferedResult.face[i].rotation) == null ? void 0 : _y.gaze.strength) || 0) + (((_z2 = newResult.face[i].rotation) == null ? void 0 : _z2.gaze.strength) || 0)) / bufferedFactor\n };\n bufferedResult.face[i] = { ...newResult.face[i], rotation, box, boxRaw, annotations: annotations2 };\n } else {\n bufferedResult.face[i] = { ...newResult.face[i], box, boxRaw, annotations: annotations2 };\n }\n }\n }\n if (!bufferedResult.object || newResult.object.length !== bufferedResult.object.length) {\n bufferedResult.object = JSON.parse(JSON.stringify(newResult.object));\n } else {\n for (let i = 0; i < newResult.object.length; i++) {\n const box = newResult.object[i].box.map((b, j10) => ((bufferedFactor - 1) * bufferedResult.object[i].box[j10] + b) / bufferedFactor);\n const boxRaw = newResult.object[i].boxRaw.map((b, j10) => ((bufferedFactor - 1) * bufferedResult.object[i].boxRaw[j10] + b) / bufferedFactor);\n bufferedResult.object[i] = { ...newResult.object[i], box, boxRaw };\n }\n }\n if (newResult.persons) {\n const newPersons = newResult.persons;\n if (!bufferedResult.persons || newPersons.length !== bufferedResult.persons.length) {\n bufferedResult.persons = JSON.parse(JSON.stringify(newPersons));\n } else {\n for (let i = 0; i < newPersons.length; i++) {\n bufferedResult.persons[i].box = newPersons[i].box.map((box, j10) => ((bufferedFactor - 1) * bufferedResult.persons[i].box[j10] + box) / bufferedFactor);\n }\n }\n }\n if (newResult.gesture)\n bufferedResult.gesture = newResult.gesture;\n bufferedResult.width = newResult.width;\n bufferedResult.height = newResult.height;\n const t12 = now();\n interpolateTime = env.perfadd ? interpolateTime + Math.round(t12 - t0) : Math.round(t12 - t0);\n if (newResult.performance)\n bufferedResult.performance = { ...newResult.performance, interpolate: interpolateTime };\n return bufferedResult;\n}\n\n// src/segmentation/meet.ts\nvar model17;\nasync function load16(config3) {\n if (!model17 || env.initial)\n model17 = await loadModel(config3.segmentation.modelPath);\n else if (config3.debug)\n log(\"cached model:\", model17[\"modelUrl\"]);\n return model17;\n}\nasync function predict16(input, config3) {\n var _a2;\n if (!model17)\n model17 = await load16(config3);\n if (!(model17 == null ? void 0 : model17[\"executor\"]) || !((_a2 = model17 == null ? void 0 : model17.inputs) == null ? void 0 : _a2[0].shape))\n return null;\n const t10 = {};\n t10.resize = eK.resizeBilinear(input, [model17.inputs[0].shape ? model17.inputs[0].shape[1] : 0, model17.inputs[0].shape ? model17.inputs[0].shape[2] : 0], false);\n t10.norm = He(t10.resize, constants.tf255);\n t10.res = model17.execute(t10.norm);\n t10.squeeze = Up(t10.res, [0]);\n [t10.bgRaw, t10.fgRaw] = so(t10.squeeze, 2);\n t10.fg = Jk(t10.fgRaw);\n t10.mul = ne(t10.fg, constants.tf255);\n t10.expand = Ra(t10.mul, 2);\n t10.output = eK.resizeBilinear(t10.expand, [input.shape[1] || 0, input.shape[2] || 0]);\n let rgba;\n switch (config3.segmentation.mode || \"default\") {\n case \"default\":\n t10.input = Up(input);\n t10.concat = xt([t10.input, t10.output], -1);\n rgba = je(t10.concat, \"int32\");\n break;\n case \"alpha\":\n rgba = je(t10.output, \"int32\");\n break;\n default:\n rgba = nr(0);\n }\n Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));\n return rgba;\n}\n\n// src/face/match.ts\nvar match_exports = {};\n__export(match_exports, {\n distance: () => distance,\n find: () => find,\n similarity: () => similarity\n});\nfunction distance(descriptor1, descriptor2, options4 = { order: 2, multiplier: 25 }) {\n if (!descriptor1 || !descriptor1)\n return Number.MAX_SAFE_INTEGER;\n let sum = 0;\n for (let i = 0; i < descriptor1.length; i++) {\n const diff = !options4.order || options4.order === 2 ? descriptor1[i] - descriptor2[i] : Math.abs(descriptor1[i] - descriptor2[i]);\n sum += !options4.order || options4.order === 2 ? diff * diff : diff ** options4.order;\n }\n return (options4.multiplier || 20) * sum;\n}\nvar normalizeDistance = (dist, order, min, max) => {\n if (dist === 0)\n return 1;\n const root = order === 2 ? Math.sqrt(dist) : dist ** (1 / order);\n const norm = (1 - root / 100 - min) / (max - min);\n const clamp2 = Math.max(Math.min(norm, 1), 0);\n return clamp2;\n};\nfunction similarity(descriptor1, descriptor2, options4 = { order: 2, multiplier: 25, min: 0.2, max: 0.8 }) {\n const dist = distance(descriptor1, descriptor2, options4);\n return normalizeDistance(dist, options4.order || 2, options4.min || 0, options4.max || 1);\n}\nfunction find(descriptor, descriptors, options4 = { order: 2, multiplier: 25, threshold: 0, min: 0.2, max: 0.8 }) {\n if (!Array.isArray(descriptor) || !Array.isArray(descriptors) || descriptor.length < 64 || descriptors.length === 0) {\n return { index: -1, distance: Number.POSITIVE_INFINITY, similarity: 0 };\n }\n let lowestDistance = Number.MAX_SAFE_INTEGER;\n let index2 = -1;\n for (let i = 0; i < descriptors.length; i++) {\n const res = descriptors[i].length === descriptor.length ? distance(descriptor, descriptors[i], options4) : Number.MAX_SAFE_INTEGER;\n if (res < lowestDistance) {\n lowestDistance = res;\n index2 = i;\n }\n if (lowestDistance < (options4.threshold || 0))\n break;\n }\n const normalizedSimilarity = normalizeDistance(lowestDistance, options4.order || 2, options4.min || 0, options4.max || 1);\n return { index: index2, distance: lowestDistance, similarity: normalizedSimilarity };\n}\n\n// src/models.ts\nvar models_exports2 = {};\n__export(models_exports2, {\n Models: () => Models,\n validateModel: () => validateModel\n});\n\n// src/body/movenetfix.ts\nvar maxJitter = 5e-3;\nvar cache5 = {\n keypoints: [],\n padding: [[0, 0], [0, 0], [0, 0], [0, 0]]\n};\nfunction bodyParts(body4) {\n for (const pair of horizontal) {\n const left = body4.keypoints.findIndex((kp2) => kp2.part === pair[0]);\n const right = body4.keypoints.findIndex((kp2) => kp2.part === pair[1]);\n if (body4.keypoints[left] && body4.keypoints[right]) {\n if (body4.keypoints[left].position[0] < body4.keypoints[right].position[0]) {\n const tmp = body4.keypoints[left];\n body4.keypoints[left] = body4.keypoints[right];\n body4.keypoints[right] = tmp;\n }\n }\n }\n for (const pair of vertical) {\n const lower = body4.keypoints.findIndex((kp2) => kp2 && kp2.part === pair[0]);\n const higher = body4.keypoints.findIndex((kp2) => kp2 && kp2.part === pair[1]);\n if (body4.keypoints[lower] && body4.keypoints[higher]) {\n if (body4.keypoints[lower].position[1] < body4.keypoints[higher].position[1]) {\n body4.keypoints.splice(lower, 1);\n }\n }\n }\n for (const [pair, compare2] of relative) {\n const left = body4.keypoints.findIndex((kp2) => kp2 && kp2.part === pair[0]);\n const right = body4.keypoints.findIndex((kp2) => kp2 && kp2.part === pair[1]);\n const leftTo = body4.keypoints.findIndex((kp2) => kp2 && kp2.part === compare2[0]);\n const rightTo = body4.keypoints.findIndex((kp2) => kp2 && kp2.part === compare2[1]);\n if (!body4.keypoints[leftTo] || !body4.keypoints[rightTo])\n continue;\n const distanceLeft = body4.keypoints[left] ? [\n Math.abs(body4.keypoints[leftTo].position[0] - body4.keypoints[left].position[0]),\n Math.abs(body4.keypoints[rightTo].position[0] - body4.keypoints[left].position[0])\n ] : [0, 0];\n const distanceRight = body4.keypoints[right] ? [\n Math.abs(body4.keypoints[rightTo].position[0] - body4.keypoints[right].position[0]),\n Math.abs(body4.keypoints[leftTo].position[0] - body4.keypoints[right].position[0])\n ] : [0, 0];\n if (distanceLeft[0] > distanceLeft[1] || distanceRight[0] > distanceRight[1]) {\n const tmp = body4.keypoints[left];\n body4.keypoints[left] = body4.keypoints[right];\n body4.keypoints[right] = tmp;\n }\n }\n}\nfunction jitter(keypoints) {\n for (let i = 0; i < keypoints.length; i++) {\n if (keypoints[i] && cache5.keypoints[i]) {\n const diff = [Math.abs(keypoints[i].positionRaw[0] - cache5.keypoints[i].positionRaw[0]), Math.abs(keypoints[i].positionRaw[1] - cache5.keypoints[i].positionRaw[1])];\n if (diff[0] < maxJitter && diff[1] < maxJitter) {\n keypoints[i] = cache5.keypoints[i];\n } else {\n cache5.keypoints[i] = keypoints[i];\n }\n } else {\n cache5.keypoints[i] = keypoints[i];\n }\n }\n return keypoints;\n}\nfunction padInput(input, inputSize10) {\n var _a2, _b2;\n const t10 = {};\n if (!((_a2 = input == null ? void 0 : input.shape) == null ? void 0 : _a2[1]) || !((_b2 = input == null ? void 0 : input.shape) == null ? void 0 : _b2[2]))\n return input;\n cache5.padding = [\n [0, 0],\n // dont touch batch\n [input.shape[2] > input.shape[1] ? Math.trunc((input.shape[2] - input.shape[1]) / 2) : 0, input.shape[2] > input.shape[1] ? Math.trunc((input.shape[2] - input.shape[1]) / 2) : 0],\n // height before&after\n [input.shape[1] > input.shape[2] ? Math.trunc((input.shape[1] - input.shape[2]) / 2) : 0, input.shape[1] > input.shape[2] ? Math.trunc((input.shape[1] - input.shape[2]) / 2) : 0],\n // width before&after\n [0, 0]\n // dont touch rbg\n ];\n t10.pad = Ks(input, cache5.padding);\n t10.resize = eK.resizeBilinear(t10.pad, [inputSize10, inputSize10]);\n const final = je(t10.resize, \"int32\");\n Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));\n return final;\n}\nfunction rescaleBody(body4, outputSize2) {\n body4.keypoints = body4.keypoints.filter((kpt4) => kpt4 == null ? void 0 : kpt4.position);\n for (const kpt4 of body4.keypoints) {\n kpt4.position = [\n kpt4.position[0] * (outputSize2[0] + cache5.padding[2][0] + cache5.padding[2][1]) / outputSize2[0] - cache5.padding[2][0],\n kpt4.position[1] * (outputSize2[1] + cache5.padding[1][0] + cache5.padding[1][1]) / outputSize2[1] - cache5.padding[1][0]\n ];\n kpt4.positionRaw = [\n kpt4.position[0] / outputSize2[0],\n kpt4.position[1] / outputSize2[1]\n ];\n }\n const rescaledBoxes = calc(body4.keypoints.map((pt) => pt.position), outputSize2);\n body4.box = rescaledBoxes.box;\n body4.boxRaw = rescaledBoxes.boxRaw;\n return body4;\n}\n\n// src/body/movenet.ts\nvar model18;\nvar inputSize8 = 0;\nvar skipped14 = Number.MAX_SAFE_INTEGER;\nvar cache6 = {\n boxes: [],\n bodies: [],\n last: 0\n};\nasync function load17(config3) {\n var _a2;\n if (env.initial)\n model18 = null;\n if (!model18) {\n fakeOps([\"size\"], config3);\n model18 = await loadModel(config3.body.modelPath);\n } else if (config3.debug)\n log(\"cached model:\", model18[\"modelUrl\"]);\n inputSize8 = (model18 == null ? void 0 : model18[\"executor\"]) && ((_a2 = model18 == null ? void 0 : model18.inputs) == null ? void 0 : _a2[0].shape) ? model18.inputs[0].shape[2] : 0;\n if (inputSize8 < 64)\n inputSize8 = 256;\n return model18;\n}\nfunction parseSinglePose(res, config3, image) {\n const kpt4 = res[0][0];\n const keypoints = [];\n let score = 0;\n for (let id2 = 0; id2 < kpt4.length; id2++) {\n score = kpt4[id2][2];\n if (score > config3.body.minConfidence) {\n const positionRaw = [kpt4[id2][1], kpt4[id2][0]];\n keypoints.push({\n score: Math.round(100 * score) / 100,\n part: kpt3[id2],\n positionRaw,\n position: [\n // normalized to input image size\n Math.round((image.shape[2] || 0) * positionRaw[0]),\n Math.round((image.shape[1] || 0) * positionRaw[1])\n ]\n });\n }\n }\n score = keypoints.reduce((prev, curr) => curr.score > prev ? curr.score : prev, 0);\n const bodies = [];\n const newBox = calc(keypoints.map((pt) => pt.position), [image.shape[2], image.shape[1]]);\n const annotations2 = {};\n for (const [name, indexes] of Object.entries(connected3)) {\n const pt = [];\n for (let i = 0; i < indexes.length - 1; i++) {\n const pt0 = keypoints.find((kp2) => kp2.part === indexes[i]);\n const pt1 = keypoints.find((kp2) => kp2.part === indexes[i + 1]);\n if (pt0 && pt1 && pt0.score > (config3.body.minConfidence || 0) && pt1.score > (config3.body.minConfidence || 0))\n pt.push([pt0.position, pt1.position]);\n }\n annotations2[name] = pt;\n }\n const body4 = { id: 0, score, box: newBox.box, boxRaw: newBox.boxRaw, keypoints, annotations: annotations2 };\n bodyParts(body4);\n bodies.push(body4);\n return bodies;\n}\nfunction parseMultiPose(res, config3, image) {\n const bodies = [];\n for (let id2 = 0; id2 < res[0].length; id2++) {\n const kpt4 = res[0][id2];\n const totalScore = Math.round(100 * kpt4[51 + 4]) / 100;\n if (totalScore > config3.body.minConfidence) {\n const keypoints = [];\n for (let i = 0; i < 17; i++) {\n const score = kpt4[3 * i + 2];\n if (score > config3.body.minConfidence) {\n const positionRaw = [kpt4[3 * i + 1], kpt4[3 * i + 0]];\n keypoints.push({\n part: kpt3[i],\n score: Math.round(100 * score) / 100,\n positionRaw,\n position: [Math.round((image.shape[2] || 0) * positionRaw[0]), Math.round((image.shape[1] || 0) * positionRaw[1])]\n });\n }\n }\n const newBox = calc(keypoints.map((pt) => pt.position), [image.shape[2], image.shape[1]]);\n const annotations2 = {};\n for (const [name, indexes] of Object.entries(connected3)) {\n const pt = [];\n for (let i = 0; i < indexes.length - 1; i++) {\n const pt0 = keypoints.find((kp2) => kp2.part === indexes[i]);\n const pt1 = keypoints.find((kp2) => kp2.part === indexes[i + 1]);\n if (pt0 && pt1 && pt0.score > (config3.body.minConfidence || 0) && pt1.score > (config3.body.minConfidence || 0))\n pt.push([pt0.position, pt1.position]);\n }\n annotations2[name] = pt;\n }\n const body4 = { id: id2, score: totalScore, box: newBox.box, boxRaw: newBox.boxRaw, keypoints: [...keypoints], annotations: annotations2 };\n bodyParts(body4);\n bodies.push(body4);\n }\n }\n bodies.sort((a, b) => b.score - a.score);\n if (bodies.length > config3.body.maxDetected)\n bodies.length = config3.body.maxDetected;\n return bodies;\n}\nasync function predict17(input, config3) {\n var _a2;\n if (!(model18 == null ? void 0 : model18[\"executor\"]) || !((_a2 = model18 == null ? void 0 : model18.inputs) == null ? void 0 : _a2[0].shape))\n return [];\n if (!config3.skipAllowed)\n cache6.boxes.length = 0;\n skipped14++;\n const skipTime = (config3.body.skipTime || 0) > now() - cache6.last;\n const skipFrame = skipped14 < (config3.body.skipFrames || 0);\n if (config3.skipAllowed && skipTime && skipFrame) {\n return cache6.bodies;\n }\n return new Promise(async (resolve) => {\n const t10 = {};\n skipped14 = 0;\n t10.input = padInput(input, inputSize8);\n t10.res = model18 == null ? void 0 : model18.execute(t10.input);\n cache6.last = now();\n const res = await t10.res.array();\n cache6.bodies = t10.res.shape[2] === 17 ? parseSinglePose(res, config3, input) : parseMultiPose(res, config3, input);\n for (const body4 of cache6.bodies) {\n rescaleBody(body4, [input.shape[2] || 1, input.shape[1] || 1]);\n jitter(body4.keypoints);\n }\n Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));\n resolve(cache6.bodies);\n });\n}\n\n// src/object/nanodet.ts\nvar model19;\nvar last10 = [];\nvar lastTime15 = 0;\nvar skipped15 = Number.MAX_SAFE_INTEGER;\nvar inputSize9 = 0;\nvar scaleBox = 2.5;\nasync function load18(config3) {\n if (!model19 || env.initial) {\n model19 = await loadModel(config3.object.modelPath);\n const inputs = (model19 == null ? void 0 : model19[\"executor\"]) ? Object.values(model19.modelSignature[\"inputs\"]) : void 0;\n inputSize9 = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 416;\n } else if (config3.debug)\n log(\"cached model:\", model19[\"modelUrl\"]);\n return model19;\n}\nasync function process4(res, outputShape, config3) {\n var _a2, _b2;\n let id2 = 0;\n let results = [];\n const size2 = inputSize9;\n for (const strideSize of [1, 2, 4]) {\n const baseSize = strideSize * 13;\n const scoresT = Up(res.find((a) => a.shape[1] === baseSize ** 2 && (a.shape[2] || 0) === labels2.length));\n const scores = await scoresT.array();\n const featuresT = Up(res.find((a) => a.shape[1] === baseSize ** 2 && (a.shape[2] || 0) < labels2.length));\n const boxesMaxT = W(featuresT, [-1, 4, (((_a2 = featuresT.shape) == null ? void 0 : _a2[1]) || 0) / 4]);\n const boxIdxT = X0(boxesMaxT, 2);\n const boxIdx = await boxIdxT.array();\n for (let i = 0; i < scoresT.shape[0]; i++) {\n for (let j10 = 0; j10 < (((_b2 = scoresT.shape) == null ? void 0 : _b2[1]) || 0); j10++) {\n const score = scores[i][j10];\n if (score > (config3.object.minConfidence || 0) && j10 !== 61) {\n const cx2 = (0.5 + Math.trunc(i % baseSize)) / baseSize;\n const cy = (0.5 + Math.trunc(i / baseSize)) / baseSize;\n const boxOffset = boxIdx[i].map((a) => a * (baseSize / strideSize / size2));\n const [x, y6] = [\n cx2 - scaleBox / strideSize * boxOffset[0],\n cy - scaleBox / strideSize * boxOffset[1]\n ];\n const [w, h] = [\n cx2 + scaleBox / strideSize * boxOffset[2] - x,\n cy + scaleBox / strideSize * boxOffset[3] - y6\n ];\n let boxRaw = [x, y6, w, h];\n boxRaw = boxRaw.map((a) => Math.max(0, Math.min(a, 1)));\n const box = [\n // results normalized to input image pixels\n boxRaw[0] * outputShape[0],\n boxRaw[1] * outputShape[1],\n boxRaw[2] * outputShape[0],\n boxRaw[3] * outputShape[1]\n ];\n const result = {\n id: id2++,\n // strideSize,\n score: Math.round(100 * score) / 100,\n class: j10 + 1,\n label: labels2[j10].label,\n // center: [Math.trunc(outputShape[0] * cx), Math.trunc(outputShape[1] * cy)],\n // centerRaw: [cx, cy],\n box: box.map((a) => Math.trunc(a)),\n boxRaw\n };\n results.push(result);\n }\n }\n }\n Ot([scoresT, featuresT, boxesMaxT, boxIdxT]);\n }\n const nmsBoxes = results.map((a) => [a.boxRaw[1], a.boxRaw[0], a.boxRaw[3], a.boxRaw[2]]);\n const nmsScores = results.map((a) => a.score);\n let nmsIdx = [];\n if (nmsBoxes && nmsBoxes.length > 0) {\n const nms = await eK.nonMaxSuppressionAsync(nmsBoxes, nmsScores, config3.object.maxDetected || 0, config3.object.iouThreshold, config3.object.minConfidence);\n nmsIdx = Array.from(await nms.data());\n Ot(nms);\n }\n results = results.filter((_val, idx) => nmsIdx.includes(idx)).sort((a, b) => b.score - a.score);\n return results;\n}\nasync function predict18(image, config3) {\n if (!(model19 == null ? void 0 : model19[\"executor\"]))\n return [];\n const skipTime = (config3.object.skipTime || 0) > now() - lastTime15;\n const skipFrame = skipped15 < (config3.object.skipFrames || 0);\n if (config3.skipAllowed && skipTime && skipFrame && last10.length > 0) {\n skipped15++;\n return last10;\n }\n skipped15 = 0;\n if (!env.kernels.includes(\"mod\") || !env.kernels.includes(\"sparsetodense\"))\n return last10;\n return new Promise(async (resolve) => {\n const outputSize2 = [image.shape[2] || 0, image.shape[1] || 0];\n const resizeT = eK.resizeBilinear(image, [inputSize9, inputSize9], false);\n const normT = He(resizeT, constants.tf255);\n const transposeT = Gp(normT, [0, 3, 1, 2]);\n let objectT;\n if (config3.object.enabled)\n objectT = model19.execute(transposeT);\n lastTime15 = now();\n const obj = await process4(objectT, outputSize2, config3);\n last10 = obj;\n Ot([resizeT, normT, transposeT, ...objectT]);\n resolve(obj);\n });\n}\n\n// src/body/posenetutils.ts\nvar partNames = [\n \"nose\",\n \"leftEye\",\n \"rightEye\",\n \"leftEar\",\n \"rightEar\",\n \"leftShoulder\",\n \"rightShoulder\",\n \"leftElbow\",\n \"rightElbow\",\n \"leftWrist\",\n \"rightWrist\",\n \"leftHip\",\n \"rightHip\",\n \"leftKnee\",\n \"rightKnee\",\n \"leftAnkle\",\n \"rightAnkle\"\n];\nvar count = partNames.length;\nvar partIds = partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\nvar connectedPartNames = [\n [\"leftHip\", \"leftShoulder\"],\n [\"leftElbow\", \"leftShoulder\"],\n [\"leftElbow\", \"leftWrist\"],\n [\"leftHip\", \"leftKnee\"],\n [\"leftKnee\", \"leftAnkle\"],\n [\"rightHip\", \"rightShoulder\"],\n [\"rightElbow\", \"rightShoulder\"],\n [\"rightElbow\", \"rightWrist\"],\n [\"rightHip\", \"rightKnee\"],\n [\"rightKnee\", \"rightAnkle\"],\n [\"leftShoulder\", \"rightShoulder\"],\n [\"leftHip\", \"rightHip\"]\n];\nvar connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => [partIds[jointNameA], partIds[jointNameB]]);\nvar poseChain = [\n [\"nose\", \"leftEye\"],\n [\"leftEye\", \"leftEar\"],\n [\"nose\", \"rightEye\"],\n [\"rightEye\", \"rightEar\"],\n [\"nose\", \"leftShoulder\"],\n [\"leftShoulder\", \"leftElbow\"],\n [\"leftElbow\", \"leftWrist\"],\n [\"leftShoulder\", \"leftHip\"],\n [\"leftHip\", \"leftKnee\"],\n [\"leftKnee\", \"leftAnkle\"],\n [\"nose\", \"rightShoulder\"],\n [\"rightShoulder\", \"rightElbow\"],\n [\"rightElbow\", \"rightWrist\"],\n [\"rightShoulder\", \"rightHip\"],\n [\"rightHip\", \"rightKnee\"],\n [\"rightKnee\", \"rightAnkle\"]\n];\nfunction getBoundingBox(keypoints) {\n const coord = keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y: y6 } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y6),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y6)\n }), {\n maxX: Number.NEGATIVE_INFINITY,\n maxY: Number.NEGATIVE_INFINITY,\n minX: Number.POSITIVE_INFINITY,\n minY: Number.POSITIVE_INFINITY\n });\n return [coord.minX, coord.minY, coord.maxX - coord.minX, coord.maxY - coord.minY];\n}\nfunction scalePoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaleY = height / inputResolutionHeight;\n const scaleX = width / inputResolutionWidth;\n const scalePose = (pose, i) => ({\n id: i,\n score: pose.score,\n boxRaw: [pose.box[0] / inputResolutionWidth, pose.box[1] / inputResolutionHeight, pose.box[2] / inputResolutionWidth, pose.box[3] / inputResolutionHeight],\n box: [Math.trunc(pose.box[0] * scaleX), Math.trunc(pose.box[1] * scaleY), Math.trunc(pose.box[2] * scaleX), Math.trunc(pose.box[3] * scaleY)],\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: [Math.trunc(position.x * scaleX), Math.trunc(position.y * scaleY)],\n positionRaw: [position.x / inputResolutionHeight, position.y / inputResolutionHeight]\n })),\n annotations: {}\n });\n const scaledPoses = poses.map((pose, i) => scalePose(pose, i));\n return scaledPoses;\n}\nvar MaxHeap = class {\n // function call\n constructor(maxSize2, getElementValue) {\n __publicField(this, \"priorityQueue\");\n // don't touch\n __publicField(this, \"numberOfElements\");\n __publicField(this, \"getElementValue\");\n this.priorityQueue = new Array(maxSize2);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\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 empty() {\n return this.numberOfElements === -1;\n }\n size() {\n return this.numberOfElements + 1;\n }\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n max() {\n return this.priorityQueue[0];\n }\n swim(k) {\n while (k > 0 && this.less(Math.floor(k / 2), k)) {\n this.exchange(k, Math.floor(k / 2));\n k = Math.floor(k / 2);\n }\n }\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j10 = 2 * k;\n if (j10 < this.numberOfElements && this.less(j10, j10 + 1))\n j10++;\n if (!this.less(k, j10))\n break;\n this.exchange(k, j10);\n k = j10;\n }\n }\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n less(i, j10) {\n return this.getValueAt(i) < this.getValueAt(j10);\n }\n exchange(i, j10) {\n const t10 = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j10];\n this.priorityQueue[j10] = t10;\n }\n};\nfunction getOffsetPoint(y6, x, keypoint, offsets) {\n return {\n y: offsets.get(y6, x, keypoint),\n x: offsets.get(y6, x, keypoint + count)\n };\n}\nfunction getImageCoords(part, outputStride2, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y: y6, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride2 + x,\n y: part.heatmapY * outputStride2 + y6\n };\n}\nfunction clamp(a, min, max) {\n if (a < min)\n return min;\n if (a > max)\n return max;\n return a;\n}\nfunction squaredDistance(y12, x12, y22, x22) {\n const dy = y22 - y12;\n const dx2 = x22 - x12;\n return dy * dy + dx2 * dx2;\n}\nfunction addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\n\n// src/body/posenet.ts\nvar model20;\nvar poseNetOutputs = [\n \"MobilenetV1/offset_2/BiasAdd\",\n \"MobilenetV1/heatmap_2/BiasAdd\",\n \"MobilenetV1/displacement_fwd_2/BiasAdd\",\n \"MobilenetV1/displacement_bwd_2/BiasAdd\"\n /* displacementBwd */\n];\nvar localMaximumRadius = 1;\nvar outputStride = 16;\nvar squaredNmsRadius = 50 ** 2;\nfunction traverse(edgeId, sourceKeypoint, targetId, scores, offsets, displacements, offsetRefineStep = 2) {\n const getDisplacement = (point2) => ({\n y: displacements.get(point2.y, point2.x, edgeId),\n x: displacements.get(point2.y, point2.x, displacements.shape[2] / 2 + edgeId)\n });\n const getStridedIndexNearPoint = (point2, height2, width2) => ({\n y: clamp(Math.round(point2.y / outputStride), 0, height2 - 1),\n x: clamp(Math.round(point2.x / outputStride), 0, width2 - 1)\n });\n const [height, width] = scores.shape;\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, height, width);\n const displacement = getDisplacement(sourceKeypointIndices);\n const displacedPoint = addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, height, width);\n const offsetPoint = getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetId, offsets);\n targetKeypoint = addVectors(\n { x: targetKeypointIndices.x * outputStride, y: targetKeypointIndices.y * outputStride },\n { x: offsetPoint.x, y: offsetPoint.y }\n );\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, height, width);\n const score = scores.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetId);\n return { position: targetKeypoint, part: partNames[targetId], score };\n}\nfunction decodePose(root, scores, offsets, displacementsFwd, displacementsBwd) {\n const tuples = poseChain.map(([parentJoinName, childJoinName]) => [partIds[parentJoinName], partIds[childJoinName]]);\n const edgesFwd = tuples.map(([, childJointId]) => childJointId);\n const edgesBwd = tuples.map(([parentJointId]) => parentJointId);\n const numParts = scores.shape[2];\n const numEdges = edgesFwd.length;\n const keypoints = new Array(numParts);\n const rootPoint = getImageCoords(root.part, outputStride, offsets);\n keypoints[root.part.id] = {\n score: root.score,\n part: partNames[root.part.id],\n position: rootPoint\n };\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceId = edgesFwd[edge];\n const targetId = edgesBwd[edge];\n if (keypoints[sourceId] && !keypoints[targetId]) {\n keypoints[targetId] = traverse(edge, keypoints[sourceId], targetId, scores, offsets, displacementsBwd);\n }\n }\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceId = edgesBwd[edge];\n const targetId = edgesFwd[edge];\n if (keypoints[sourceId] && !keypoints[targetId]) {\n keypoints[targetId] = traverse(edge, keypoints[sourceId], targetId, scores, offsets, displacementsFwd);\n }\n }\n return keypoints;\n}\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, 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)\n break;\n }\n return localMaximum;\n}\nfunction buildPartWithScoreQueue(minConfidence2, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new 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 if (score < minConfidence2)\n continue;\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, scores))\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n return queue;\n}\nfunction withinRadius(poses, { x, y: y6 }, keypointId) {\n return poses.some(({ keypoints }) => {\n var _a2;\n const correspondingKeypoint = (_a2 = keypoints[keypointId]) == null ? void 0 : _a2.position;\n if (!correspondingKeypoint)\n return false;\n return squaredDistance(y6, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\nfunction getInstanceScore(existingPoses, keypoints) {\n const notOverlappedKeypointScores = keypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinRadius(existingPoses, position, keypointId))\n result += score;\n return result;\n }, 0);\n return notOverlappedKeypointScores / keypoints.length;\n}\nfunction decode(offsets, scores, displacementsFwd, displacementsBwd, maxDetected, minConfidence2) {\n const poses = [];\n const queue = buildPartWithScoreQueue(minConfidence2, scores);\n while (poses.length < maxDetected && !queue.empty()) {\n const root = queue.dequeue();\n const rootImageCoords = getImageCoords(root.part, outputStride, offsets);\n if (withinRadius(poses, rootImageCoords, root.part.id))\n continue;\n let keypoints = decodePose(root, scores, offsets, displacementsFwd, displacementsBwd);\n keypoints = keypoints.filter((a) => a.score > minConfidence2);\n const score = getInstanceScore(poses, keypoints);\n const box = getBoundingBox(keypoints);\n if (score > minConfidence2)\n poses.push({ keypoints, box, score: Math.round(100 * score) / 100 });\n }\n return poses;\n}\nasync function predict19(input, config3) {\n if (!(model20 == null ? void 0 : model20[\"executor\"]))\n return [];\n const res = Ee(() => {\n if (!model20.inputs[0].shape)\n return [];\n const resized = eK.resizeBilinear(input, [model20.inputs[0].shape[2], model20.inputs[0].shape[1]]);\n const normalized = ke(He(je(resized, \"float32\"), 127.5), 1);\n const results = model20.execute(normalized, poseNetOutputs);\n const results3d = results.map((y6) => Up(y6, [0]));\n results3d[1] = Ws(results3d[1]);\n return results3d;\n });\n const buffers = await Promise.all(res.map((tensor) => tensor.buffer()));\n for (const t10 of res)\n Ot(t10);\n const decoded = decode(buffers[0], buffers[1], buffers[2], buffers[3], config3.body.maxDetected, config3.body.minConfidence);\n if (!model20.inputs[0].shape)\n return [];\n const scaled = scalePoses(decoded, [input.shape[1], input.shape[2]], [model20.inputs[0].shape[2], model20.inputs[0].shape[1]]);\n return scaled;\n}\nasync function load19(config3) {\n if (!model20 || env.initial)\n model20 = await loadModel(config3.body.modelPath);\n else if (config3.debug)\n log(\"cached model:\", model20[\"modelUrl\"]);\n return model20;\n}\n\n// src/segmentation/rvm.ts\nvar model21;\nvar outputNodes2 = [\"fgr\", \"pha\", \"r1o\", \"r2o\", \"r3o\", \"r4o\"];\nvar t = {};\nvar ratio = 0;\nfunction init3(config3) {\n Ot([t.r1i, t.r2i, t.r3i, t.r4i, t.downsample_ratio]);\n t.r1i = nr(0);\n t.r2i = nr(0);\n t.r3i = nr(0);\n t.r4i = nr(0);\n ratio = config3.segmentation.ratio || 0.5;\n t.downsample_ratio = nr(ratio);\n}\nasync function load20(config3) {\n if (!model21 || env.initial)\n model21 = await loadModel(config3.segmentation.modelPath);\n else if (config3.debug)\n log(\"cached model:\", model21[\"modelUrl\"]);\n init3(config3);\n return model21;\n}\nvar normalize = (r) => Ee(() => {\n const squeeze = Up(r, [0]);\n const mul = ne(squeeze, constants.tf255);\n const cast = je(mul, \"int32\");\n return cast;\n});\nfunction getRGBA(fgr, pha) {\n const rgb3 = fgr ? normalize(fgr) : Us([pha.shape[1] || 0, pha.shape[2] || 0, 3], 255, \"int32\");\n const a = pha ? normalize(pha) : Us([fgr.shape[1] || 0, fgr.shape[2] || 0, 1], 255, \"int32\");\n const rgba = xt([rgb3, a], -1);\n Ot([rgb3, a]);\n return rgba;\n}\nfunction getState(state) {\n return Ee(() => {\n const r = {};\n r.unstack = so(state, -1);\n r.concat = xt(r.unstack, 1);\n r.split = Oa(r.concat, 4, 1);\n r.stack = xt(r.split, 2);\n r.squeeze = Up(r.stack, [0]);\n r.expand = Ra(r.squeeze, -1);\n r.add = be(r.expand, 1);\n r.mul = ne(r.add, 127.5);\n r.cast = je(r.mul, \"int32\");\n r.tile = Ai(r.cast, [1, 1, 3]);\n r.alpha = Us([r.tile.shape[0] || 0, r.tile.shape[1] || 0, 1], 255, \"int32\");\n return xt([r.tile, r.alpha], -1);\n });\n}\nasync function predict20(input, config3) {\n if (!model21)\n model21 = await load20(config3);\n if (!(model21 == null ? void 0 : model21[\"executor\"]))\n return null;\n t.src = He(input, 255);\n if (ratio !== config3.segmentation.ratio)\n init3(config3);\n const [fgr, pha, r1o, r2o, r3o, r4o] = await model21.executeAsync(t, outputNodes2);\n let rgba;\n switch (config3.segmentation.mode || \"default\") {\n case \"default\":\n rgba = getRGBA(fgr, pha);\n break;\n case \"alpha\":\n rgba = getRGBA(null, pha);\n break;\n case \"foreground\":\n rgba = getRGBA(fgr, null);\n break;\n case \"state\":\n rgba = getState(r1o);\n break;\n default:\n rgba = nr(0);\n }\n Ot([t.src, fgr, pha, t.r1i, t.r2i, t.r3i, t.r4i]);\n [t.r1i, t.r2i, t.r3i, t.r4i] = [r1o, r2o, r3o, r4o];\n return rgba;\n}\n\n// src/segmentation/selfie.ts\nvar model22;\nasync function load21(config3) {\n if (!model22 || env.initial)\n model22 = await loadModel(config3.segmentation.modelPath);\n else if (config3.debug)\n log(\"cached model:\", model22[\"modelUrl\"]);\n return model22;\n}\nasync function predict21(input, config3) {\n var _a2;\n if (!model22)\n model22 = await load21(config3);\n if (!(model22 == null ? void 0 : model22[\"executor\"]) || !((_a2 = model22 == null ? void 0 : model22.inputs) == null ? void 0 : _a2[0].shape))\n return null;\n const t10 = {};\n t10.resize = eK.resizeBilinear(input, [model22.inputs[0].shape ? model22.inputs[0].shape[1] : 0, model22.inputs[0].shape ? model22.inputs[0].shape[2] : 0], false);\n t10.norm = He(t10.resize, constants.tf255);\n t10.res = model22.execute(t10.norm);\n t10.squeeze = Up(t10.res, [0]);\n t10.alpha = eK.resizeBilinear(t10.squeeze, [input.shape[1] || 0, input.shape[2] || 0]);\n t10.mul = ne(t10.alpha, constants.tf255);\n let rgba;\n switch (config3.segmentation.mode || \"default\") {\n case \"default\":\n t10.input = Up(input);\n t10.concat = xt([t10.input, t10.mul], -1);\n rgba = je(t10.concat, \"int32\");\n break;\n case \"alpha\":\n rgba = je(t10.mul, \"int32\");\n break;\n default:\n rgba = nr(0);\n }\n Object.keys(t10).forEach((tensor) => Ot(t10[tensor]));\n return rgba;\n}\n\n// src/models.ts\nfunction validateModel(instance, model23, name) {\n var _a2, _b2;\n if (!model23)\n return null;\n if (!((_a2 = instance == null ? void 0 : instance.config) == null ? void 0 : _a2.validateModels))\n return null;\n const simpleOps = [\"const\", \"placeholder\", \"noop\", \"pad\", \"squeeze\", \"add\", \"sub\", \"mul\", \"div\"];\n const ignoreOps = [\"biasadd\", \"fusedbatchnormv3\", \"matmul\", \"switch\", \"shape\", \"merge\", \"split\", \"broadcastto\"];\n const ops = [];\n const missing = [];\n const url = model23[\"modelUrl\"];\n const executor = model23[\"executor\"];\n if ((_b2 = executor == null ? void 0 : executor.graph) == null ? void 0 : _b2.nodes) {\n for (const kernel of Object.values(executor.graph.nodes)) {\n const op = kernel.op.toLowerCase();\n if (!ops.includes(op))\n ops.push(op);\n }\n } else {\n if (!executor && instance.config.debug) {\n log(\"model not loaded\", name);\n }\n }\n for (const op of ops) {\n if (!simpleOps.includes(op) && !ignoreOps.includes(op) && !instance.env.kernels.includes(op) && !instance.env.kernels.includes(op.replace(\"_\", \"\")) && !instance.env.kernels.includes(op.replace(\"native\", \"\")) && !instance.env.kernels.includes(op.replace(\"v2\", \"\"))) {\n missing.push(op);\n }\n }\n if (instance.config.debug && missing.length > 0)\n log(\"model validation failed:\", name, missing);\n return missing.length > 0 ? { name, missing, ops, url } : null;\n}\nvar Models = class {\n constructor(currentInstance) {\n __publicField(this, \"instance\");\n __publicField(this, \"models\", {});\n this.models = {};\n this.instance = currentInstance;\n }\n stats() {\n let totalSizeFromManifest = 0;\n let totalSizeWeights = 0;\n let totalSizeLoading = 0;\n for (const m of Object.values(modelStats)) {\n totalSizeFromManifest += m.sizeFromManifest;\n totalSizeWeights += m.sizeLoadedWeights;\n totalSizeLoading += m.sizeDesired;\n }\n const percentageLoaded = totalSizeLoading > 0 ? totalSizeWeights / totalSizeLoading : 0;\n return {\n numLoadedModels: Object.values(modelStats).length,\n numDefinedModels: Object.keys(this.models).length,\n percentageLoaded,\n totalSizeFromManifest,\n totalSizeWeights,\n totalSizeLoading,\n modelStats: Object.values(modelStats)\n };\n }\n reset() {\n for (const model23 of Object.keys(this.models))\n this.models[model23] = null;\n }\n async load(instance) {\n var _a2, _b2, _c2, _d2, _e, _f2, _g2, _h2, _i2, _j2, _k, _l2, _m2, _n2, _o2, _p2, _q2, _r2, _s2, _t, _u2, _v2, _w2, _x2, _y, _z2, _A2;\n if (env.initial)\n this.reset();\n if (instance)\n this.instance = instance;\n const m = {};\n m.blazeface = this.instance.config.face.enabled && !this.models.blazeface ? load3(this.instance.config) : null;\n m.antispoof = this.instance.config.face.enabled && ((_a2 = this.instance.config.face.antispoof) == null ? void 0 : _a2.enabled) && !this.models.antispoof ? load8(this.instance.config) : null;\n m.liveness = this.instance.config.face.enabled && ((_b2 = this.instance.config.face.liveness) == null ? void 0 : _b2.enabled) && !this.models.liveness ? load9(this.instance.config) : null;\n m.faceres = this.instance.config.face.enabled && ((_c2 = this.instance.config.face.description) == null ? void 0 : _c2.enabled) && !this.models.faceres ? load7(this.instance.config) : null;\n m.emotion = this.instance.config.face.enabled && ((_d2 = this.instance.config.face.emotion) == null ? void 0 : _d2.enabled) && !this.models.emotion ? load6(this.instance.config) : null;\n m.iris = this.instance.config.face.enabled && ((_e = this.instance.config.face.iris) == null ? void 0 : _e.enabled) && !((_f2 = this.instance.config.face.attention) == null ? void 0 : _f2.enabled) && !this.models.iris ? load4(this.instance.config) : null;\n m.facemesh = this.instance.config.face.enabled && ((_g2 = this.instance.config.face.mesh) == null ? void 0 : _g2.enabled) && !this.models.facemesh ? load5(this.instance.config) : null;\n m.gear = this.instance.config.face.enabled && ((_h2 = this.instance.config.face[\"gear\"]) == null ? void 0 : _h2.enabled) && !this.models.gear ? load10(this.instance.config) : null;\n m.ssrnetage = this.instance.config.face.enabled && ((_i2 = this.instance.config.face[\"ssrnet\"]) == null ? void 0 : _i2.enabled) && !this.models.ssrnetage ? load11(this.instance.config) : null;\n m.ssrnetgender = this.instance.config.face.enabled && ((_j2 = this.instance.config.face[\"ssrnet\"]) == null ? void 0 : _j2.enabled) && !this.models.ssrnetgender ? load12(this.instance.config) : null;\n m.mobilefacenet = this.instance.config.face.enabled && ((_k = this.instance.config.face[\"mobilefacenet\"]) == null ? void 0 : _k.enabled) && !this.models.mobilefacenet ? load13(this.instance.config) : null;\n m.insightface = this.instance.config.face.enabled && ((_l2 = this.instance.config.face[\"insightface\"]) == null ? void 0 : _l2.enabled) && !this.models.insightface ? load14(this.instance.config) : null;\n m.blazepose = this.instance.config.body.enabled && !this.models.blazepose && ((_m2 = this.instance.config.body.modelPath) == null ? void 0 : _m2.includes(\"blazepose\")) ? loadPose(this.instance.config) : null;\n m.blazeposedetect = this.instance.config.body.enabled && !this.models.blazeposedetect && this.instance.config.body[\"detector\"] && this.instance.config.body[\"detector\"].modelPath ? loadDetect(this.instance.config) : null;\n m.efficientpose = this.instance.config.body.enabled && !this.models.efficientpose && ((_n2 = this.instance.config.body.modelPath) == null ? void 0 : _n2.includes(\"efficientpose\")) ? load2(this.instance.config) : null;\n m.movenet = this.instance.config.body.enabled && !this.models.movenet && ((_o2 = this.instance.config.body.modelPath) == null ? void 0 : _o2.includes(\"movenet\")) ? load17(this.instance.config) : null;\n m.posenet = this.instance.config.body.enabled && !this.models.posenet && ((_p2 = this.instance.config.body.modelPath) == null ? void 0 : _p2.includes(\"posenet\")) ? load19(this.instance.config) : null;\n m.handtrack = this.instance.config.hand.enabled && !this.models.handtrack && ((_r2 = (_q2 = this.instance.config.hand.detector) == null ? void 0 : _q2.modelPath) == null ? void 0 : _r2.includes(\"handtrack\")) ? loadDetect2(this.instance.config) : null;\n m.handskeleton = this.instance.config.hand.enabled && this.instance.config.hand.landmarks && !this.models.handskeleton && ((_t = (_s2 = this.instance.config.hand.detector) == null ? void 0 : _s2.modelPath) == null ? void 0 : _t.includes(\"handtrack\")) ? loadSkeleton(this.instance.config) : null;\n if ((_v2 = (_u2 = this.instance.config.hand.detector) == null ? void 0 : _u2.modelPath) == null ? void 0 : _v2.includes(\"handdetect\"))\n [m.handpose, m.handskeleton] = !this.models.handpose ? await load15(this.instance.config) : [null, null];\n m.centernet = this.instance.config.object.enabled && !this.models.centernet && ((_w2 = this.instance.config.object.modelPath) == null ? void 0 : _w2.includes(\"centernet\")) ? load(this.instance.config) : null;\n m.nanodet = this.instance.config.object.enabled && !this.models.nanodet && ((_x2 = this.instance.config.object.modelPath) == null ? void 0 : _x2.includes(\"nanodet\")) ? load18(this.instance.config) : null;\n m.selfie = this.instance.config.segmentation.enabled && !this.models.selfie && ((_y = this.instance.config.segmentation.modelPath) == null ? void 0 : _y.includes(\"selfie\")) ? load21(this.instance.config) : null;\n m.meet = this.instance.config.segmentation.enabled && !this.models.meet && ((_z2 = this.instance.config.segmentation.modelPath) == null ? void 0 : _z2.includes(\"meet\")) ? load16(this.instance.config) : null;\n m.rvm = this.instance.config.segmentation.enabled && !this.models.rvm && ((_A2 = this.instance.config.segmentation.modelPath) == null ? void 0 : _A2.includes(\"rvm\")) ? load20(this.instance.config) : null;\n for (const [model23, promise] of Object.entries(m)) {\n if (promise == null ? void 0 : promise[\"then\"])\n promise[\"then\"]((val) => this.models[model23] = val);\n }\n await Promise.all(Object.values(m));\n }\n list() {\n const models3 = Object.keys(this.models).map((model23) => {\n var _a2;\n return { name: model23, loaded: this.models[model23] !== null, size: 0, url: this.models[model23] ? (_a2 = this.models[model23]) == null ? void 0 : _a2[\"modelUrl\"] : null };\n });\n for (const m of models3) {\n const stats = Object.keys(modelStats).find((s) => s.startsWith(m.name));\n if (!stats)\n continue;\n m.size = modelStats[stats].sizeLoadedWeights;\n m.url = modelStats[stats].url;\n }\n return models3;\n }\n loaded() {\n const list = this.list();\n const loaded = list.filter((model23) => model23.loaded).map((model23) => model23.name);\n return loaded;\n }\n validate() {\n const missing = [];\n for (const defined of Object.keys(this.models)) {\n const model23 = this.models[defined];\n if (!model23)\n continue;\n const res = validateModel(this.instance, model23, defined);\n if (res)\n missing.push(res);\n }\n return missing;\n }\n};\n\n// src/util/persons.ts\nfunction join2(faces, bodies, hands, gestures, shape) {\n var _a2, _b2, _c2, _d2, _e, _f2;\n let id2 = 0;\n const persons = [];\n for (const face4 of faces) {\n const person2 = { id: id2++, face: face4, body: null, hands: { left: null, right: null }, gestures: [], box: [0, 0, 0, 0] };\n for (const body4 of bodies) {\n if (face4.box[0] > body4.box[0] && face4.box[0] < body4.box[0] + body4.box[2] && face4.box[1] + face4.box[3] > body4.box[1] && face4.box[1] + face4.box[3] < body4.box[1] + body4.box[3]) {\n person2.body = body4;\n }\n }\n if (person2.body) {\n for (const hand3 of hands) {\n if (hand3.box[0] + hand3.box[2] > person2.body.box[0] && hand3.box[0] + hand3.box[2] < person2.body.box[0] + person2.body.box[2] && hand3.box[1] + hand3.box[3] > person2.body.box[1] && hand3.box[1] + hand3.box[3] < person2.body.box[1] + person2.body.box[3]) {\n if (person2.hands)\n person2.hands.left = hand3;\n }\n if (hand3.box[0] < person2.body.box[0] + person2.body.box[2] && hand3.box[0] > person2.body.box[0] && hand3.box[1] + hand3.box[3] > person2.body.box[1] && hand3.box[1] + hand3.box[3] < person2.body.box[1] + person2.body.box[3]) {\n if (person2.hands)\n person2.hands.right = hand3;\n }\n }\n }\n for (const gesture2 of gestures) {\n if (gesture2[\"face\"] !== void 0 && gesture2[\"face\"] === face4.id)\n person2.gestures.push(gesture2);\n else if (gesture2[\"iris\"] !== void 0 && gesture2[\"iris\"] === face4.id)\n person2.gestures.push(gesture2);\n else if (gesture2[\"body\"] !== void 0 && gesture2[\"body\"] === ((_a2 = person2.body) == null ? void 0 : _a2.id))\n person2.gestures.push(gesture2);\n else if (gesture2[\"hand\"] !== void 0 && gesture2[\"hand\"] === ((_b2 = person2.hands.left) == null ? void 0 : _b2.id))\n person2.gestures.push(gesture2);\n else if (gesture2[\"hand\"] !== void 0 && gesture2[\"hand\"] === ((_c2 = person2.hands.right) == null ? void 0 : _c2.id))\n person2.gestures.push(gesture2);\n }\n const x = [];\n const y6 = [];\n const extractXY = (box) => {\n if (box && box.length === 4) {\n x.push(box[0], box[0] + box[2]);\n y6.push(box[1], box[1] + box[3]);\n }\n };\n extractXY(person2.face.box);\n extractXY((_d2 = person2.body) == null ? void 0 : _d2.box);\n extractXY((_e = person2.hands.left) == null ? void 0 : _e.box);\n extractXY((_f2 = person2.hands.right) == null ? void 0 : _f2.box);\n const minX = Math.min(...x);\n const minY = Math.min(...y6);\n person2.box = [minX, minY, Math.max(...x) - minX, Math.max(...y6) - minY];\n if ((shape == null ? void 0 : shape[1]) && (shape == null ? void 0 : shape[2]))\n person2.boxRaw = [person2.box[0] / shape[2], person2.box[1] / shape[1], person2.box[2] / shape[2], person2.box[3] / shape[1]];\n persons.push(person2);\n }\n return persons;\n}\n\n// src/sample.ts\nvar face3 = `\n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`;\nvar body3 = `\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\n// src/warmup.ts\nasync function warmupBitmap(instance) {\n const b64toBlob = (base64, type = \"application/octet-stream\") => fetch(`data:${type};base64,${base64}`).then((res2) => res2.blob());\n let blob;\n let res;\n switch (instance.config.warmup) {\n case \"face\":\n blob = await b64toBlob(face3);\n break;\n case \"body\":\n case \"full\":\n blob = await b64toBlob(body3);\n break;\n default:\n blob = null;\n }\n if (blob) {\n const bitmap = await createImageBitmap(blob);\n res = await instance.detect(bitmap, instance.config);\n bitmap.close();\n }\n return res;\n}\nasync function warmupCanvas(instance) {\n return new Promise((resolve) => {\n let src;\n switch (instance.config.warmup) {\n case \"face\":\n src = \"data:image/jpeg;base64,\" + face3;\n break;\n case \"full\":\n case \"body\":\n src = \"data:image/jpeg;base64,\" + body3;\n break;\n default:\n src = \"\";\n }\n let img;\n if (typeof Image !== \"undefined\")\n img = new Image();\n else if (env.Image)\n img = new env.Image();\n else {\n resolve(void 0);\n return;\n }\n img.onload = async () => {\n const canvas3 = canvas(img.naturalWidth, img.naturalHeight);\n if (!canvas3) {\n log(\"Warmup: Canvas not found\");\n resolve(void 0);\n } else {\n const ctx = canvas3.getContext(\"2d\");\n if (ctx)\n ctx.drawImage(img, 0, 0);\n const tensor = await instance.image(canvas3, true);\n const res = tensor.tensor ? await instance.detect(tensor.tensor, instance.config) : void 0;\n resolve(res);\n }\n };\n if (src)\n img.src = src;\n else\n resolve(void 0);\n });\n}\nasync function warmupNode(instance) {\n const atob2 = (str) => Buffer.from(str, \"base64\");\n let img;\n if (instance.config.warmup === \"face\")\n img = atob2(face3);\n else\n img = atob2(body3);\n let res;\n if (\"node\" in tfjs_esm_exports && Rie() === \"tensorflow\") {\n const data = (void 0).decodeJpeg(img);\n const expanded = Ra(data, 0);\n instance.tf.dispose(data);\n res = await instance.detect(expanded, instance.config);\n instance.tf.dispose(expanded);\n } else {\n if (instance.config.debug)\n log(\"Warmup tfjs-node not loaded\");\n }\n return res;\n}\nasync function runInference(instance) {\n let res;\n if (typeof createImageBitmap === \"function\")\n res = await warmupBitmap(instance);\n else if (typeof Image !== \"undefined\" || env.Canvas !== void 0)\n res = await warmupCanvas(instance);\n else\n res = await warmupNode(instance);\n return res;\n}\nasync function runCompile(instance) {\n var _a2, _b2, _c2, _d2;\n if (!O().flagRegistry.ENGINE_COMPILE_ONLY)\n return;\n const backendType = Rie();\n const webGLBackend = Pie();\n if (backendType !== \"webgl\" && backendType !== \"humangl\" || !(webGLBackend == null ? void 0 : webGLBackend[\"checkCompileCompletion\"])) {\n return;\n }\n O().set(\"ENGINE_COMPILE_ONLY\", true);\n const numTensorsStart = sr().state.numTensors;\n const compiledModels = [];\n for (const [modelName, model23] of Object.entries(instance.models.models)) {\n if (!model23)\n continue;\n const shape = (model23 == null ? void 0 : model23.modelSignature) && ((_b2 = (_a2 = model23 == null ? void 0 : model23.inputs) == null ? void 0 : _a2[0]) == null ? void 0 : _b2.shape) ? [...model23.inputs[0].shape] : [1, 64, 64, 3];\n const dtype = (model23 == null ? void 0 : model23.modelSignature) && ((_d2 = (_c2 = model23 == null ? void 0 : model23.inputs) == null ? void 0 : _c2[0]) == null ? void 0 : _d2.dtype) ? model23.inputs[0].dtype : \"float32\";\n for (let dim = 0; dim < shape.length; dim++) {\n if (shape[dim] === -1)\n shape[dim] = dim === 0 ? 1 : 64;\n }\n const tensor = Br(shape, dtype);\n try {\n const res = model23.execute(tensor);\n compiledModels.push(modelName);\n if (Array.isArray(res))\n res.forEach((t10) => Ot(t10));\n else\n Ot(res);\n } catch (e) {\n if (instance.config.debug)\n log(\"compile fail model:\", modelName);\n }\n Ot(tensor);\n }\n const kernels = await webGLBackend[\"checkCompileCompletionAsync\"]();\n webGLBackend[\"getUniformLocations\"]();\n if (instance.config.debug)\n log(\"compile pass:\", { models: compiledModels, kernels: kernels.length });\n O().set(\"ENGINE_COMPILE_ONLY\", false);\n const numTensorsEnd = sr().state.numTensors;\n if (numTensorsEnd - numTensorsStart > 0)\n log(\"tensor leak:\", numTensorsEnd - numTensorsStart);\n}\nasync function warmup(instance, userConfig) {\n await check(instance, false);\n const t0 = now();\n instance.state = \"warmup\";\n if (userConfig)\n instance.config = mergeDeep(instance.config, userConfig);\n if (!instance.config.warmup || instance.config.warmup.length === 0 || instance.config.warmup === \"none\") {\n return empty();\n }\n return new Promise(async (resolve) => {\n await instance.models.load();\n await runCompile(instance);\n const res = await runInference(instance);\n const t12 = now();\n if (instance.config.debug)\n log(\"warmup\", instance.config.warmup, Math.round(t12 - t0), \"ms\");\n instance.emit(\"warmup\");\n resolve(res);\n });\n}\n\n// src/human.ts\nvar _numTensors, _analyzeMemoryLeaks, _checkSanity, _sanity, _loops;\nvar Human = class {\n // definition end\n /** Constructor for **Human** library that is futher used for all operations\n * @param userConfig - user configuration object {@link Config}\n */\n constructor(userConfig) {\n /** Current version of Human library in *semver* format */\n __publicField(this, \"version\");\n /** Current configuration\n * - Defaults: [config](https://github.com/vladmandic/human/blob/main/src/config.ts#L262)\n */\n __publicField(this, \"config\");\n /** Last known result of detect run\n * - Can be accessed anytime after initial detection\n */\n __publicField(this, \"result\");\n /** Current state of Human library\n * - Can be polled to determine operations that are currently executed\n * - Progresses through: 'config', 'check', 'backend', 'load', 'run:', 'idle'\n */\n __publicField(this, \"state\");\n /** currenty processed image tensor and canvas */\n __publicField(this, \"process\");\n /** Instance of TensorFlow/JS used by Human\n * - Can be embedded or externally provided\n * [TFJS API](https://js.tensorflow.org/api/latest/)\n */\n __publicField(this, \"tf\");\n /** Object containing environment information used for diagnostics */\n __publicField(this, \"env\", env);\n /** Draw helper classes that can draw detected objects on canvas using specified draw\n * - canvas: draws input to canvas\n * - options: are global settings for all draw operations, can be overriden for each draw method {@link DrawOptions}\n * - face, body, hand, gesture, object, person: draws detected results as overlays on canvas\n */\n // draw: { canvas: typeof draw.canvas, face: typeof draw.face, body: typeof draw.body, hand: typeof draw.hand, gesture: typeof draw.gesture, object: typeof draw.object, person: typeof draw.person, all: typeof draw.all, options: DrawOptions };\n __publicField(this, \"draw\", draw_exports);\n /** Face Matching\n * - similarity: compare two face descriptors and return similarity index\n * - distance: compare two face descriptors and return raw calculated differences\n * - find: compare face descriptor to array of face descriptors and return best match\n */\n __publicField(this, \"match\", match_exports);\n /** Currently loaded models\n * @internal\n * {@link models#Models}\n */\n __publicField(this, \"models\");\n /** Container for events dispatched by Human\n * Possible events:\n * - `create`: triggered when Human object is instantiated\n * - `load`: triggered when models are loaded (explicitly or on-demand)\n * - `image`: triggered when input image is processed\n * - `result`: triggered when detection is complete\n * - `warmup`: triggered when warmup is complete\n * - `error`: triggered on some errors\n */\n __publicField(this, \"events\");\n /** Reference face triangualtion array of 468 points, used for triangle references between points */\n __publicField(this, \"faceTriangulation\");\n /** Refernce UV map of 468 values, used for 3D mapping of the face mesh */\n __publicField(this, \"faceUVMap\");\n /** Performance object that contains values for all recently performed operations */\n __publicField(this, \"performance\");\n // perf members are dynamically defined as needed\n __privateAdd(this, _numTensors, void 0);\n __privateAdd(this, _analyzeMemoryLeaks, void 0);\n __privateAdd(this, _checkSanity, void 0);\n /** internal function to measure tensor leaks */\n __publicField(this, \"analyze\", (...msg) => {\n if (!__privateGet(this, _analyzeMemoryLeaks))\n return;\n const currentTensors = this.tf.engine().state.numTensors;\n const previousTensors = __privateGet(this, _numTensors);\n __privateSet(this, _numTensors, currentTensors);\n const leaked = currentTensors - previousTensors;\n if (leaked !== 0)\n log(...msg, leaked);\n });\n /** internal function for quick sanity check on inputs @hidden */\n __privateAdd(this, _sanity, (input) => {\n if (!__privateGet(this, _checkSanity))\n return null;\n if (!input)\n return \"input is not defined\";\n if (this.env.node && !(input instanceof it))\n return \"input must be a tensor\";\n try {\n this.tf.getBackend();\n } catch (e) {\n return \"backend not loaded\";\n }\n return null;\n });\n /** WebCam helper methods\n *\n */\n __publicField(this, \"webcam\", new WebCam());\n /** emit event */\n __publicField(this, \"emit\", (event) => {\n var _a2;\n if ((_a2 = this.events) == null ? void 0 : _a2.dispatchEvent)\n this.events.dispatchEvent(new Event(event));\n });\n /** internal structure that keeps track of processed videos @hidden */\n __privateAdd(this, _loops, {});\n const tfVersion = (tse.tfjs || RK).replace(/-(.*)/, \"\");\n config.wasmPath = `https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@${tfVersion}/dist/`;\n config.modelBasePath = env.browser ? \"../models/\" : \"file://models/\";\n this.version = version;\n Object.defineProperty(this, \"version\", { value: version });\n this.config = JSON.parse(JSON.stringify(config));\n Object.seal(this.config);\n this.config.cacheModels = typeof indexedDB !== \"undefined\";\n if (userConfig)\n this.config = mergeDeep(this.config, userConfig);\n setModelLoadOptions(this.config);\n this.tf = tfjs_esm_exports;\n this.state = \"idle\";\n __privateSet(this, _numTensors, 0);\n __privateSet(this, _analyzeMemoryLeaks, false);\n __privateSet(this, _checkSanity, false);\n this.performance = {};\n this.events = typeof EventTarget !== \"undefined\" ? new EventTarget() : void 0;\n this.models = new Models(this);\n init2();\n this.result = empty();\n this.process = { tensor: null, canvas: null };\n this.faceTriangulation = triangulation;\n this.faceUVMap = uvmap;\n validateModel(this, null, \"\");\n this.emit(\"create\");\n if (this.config.debug || this.env.browser)\n log(`version: ${this.version}`);\n if (this.config.debug)\n log(`tfjs version: ${this.tf.version[\"tfjs-core\"]}`);\n const envTemp = JSON.parse(JSON.stringify(this.env));\n delete envTemp.kernels;\n delete envTemp.initial;\n delete envTemp.perfadd;\n if (this.config.debug)\n log(\"environment:\", envTemp);\n }\n /** Reset configuration to default values */\n reset() {\n const currentBackend = this.config.backend;\n this.config = JSON.parse(JSON.stringify(config));\n this.config.backend = currentBackend;\n reset();\n env.initial = true;\n }\n /** Validate current configuration schema */\n validate(userConfig) {\n const msgs = validate(config, userConfig || this.config);\n if (msgs.length === 0)\n this.config = mergeDeep(this.config, userConfig);\n return msgs;\n }\n /** Utility wrapper for performance.now() */\n now() {\n return now();\n }\n /** Process input as return canvas and tensor\n *\n * @param input - any input {@link Input}\n * @param getTensor - should image processing also return tensor or just canvas\n * Returns object with `tensor` and `canvas`\n */\n image(input, getTensor = false) {\n return process2(input, this.config, getTensor);\n }\n /** Segmentation method takes any input and returns RGBA tensor\n * Note: Segmentation is not triggered as part of detect process\n *\n * @param input - {@link Input}\n * Returns tensor which contains image data in RGBA format\n */\n async segmentation(input, userConfig) {\n var _a2, _b2, _c2;\n if (userConfig)\n this.config = mergeDeep(this.config, userConfig);\n if (!this.config.segmentation.enabled)\n return null;\n const processed = await process2(input, this.config);\n if (!processed.tensor)\n return null;\n let tensor = null;\n if ((_a2 = this.config.segmentation.modelPath) == null ? void 0 : _a2.includes(\"rvm\"))\n tensor = await predict20(processed.tensor, this.config);\n if ((_b2 = this.config.segmentation.modelPath) == null ? void 0 : _b2.includes(\"meet\"))\n tensor = await predict16(processed.tensor, this.config);\n if ((_c2 = this.config.segmentation.modelPath) == null ? void 0 : _c2.includes(\"selfie\"))\n tensor = await predict21(processed.tensor, this.config);\n Ot(processed.tensor);\n return tensor;\n }\n /** Compare two input tensors for pixel similarity\n * - use `human.image` to process any valid input and get a tensor that can be used for compare\n * - when passing manually generated tensors:\n * - both input tensors must be in format [1, height, width, 3]\n * - if resolution of tensors does not match, second tensor will be resized to match resolution of the first tensor\n * - return value is pixel similarity score normalized by input resolution and rgb channels\n */\n compare(firstImageTensor, secondImageTensor) {\n return compare(this.config, firstImageTensor, secondImageTensor);\n }\n /** Explicit backend initialization\n * - Normally done implicitly during initial load phase\n * - Call to explictly register and initialize TFJS backend without any other operations\n * - Use when changing backend during runtime\n */\n async init() {\n await check(this, true);\n await this.tf.ready();\n reset();\n }\n /** Load method preloads all configured models on-demand\n * - Not explicitly required as any required model is load implicitly on it's first run\n *\n * @param userConfig - {@link Config}\n */\n async load(userConfig) {\n this.state = \"load\";\n const timeStamp = now();\n const count2 = Object.values(this.models.models).filter((model23) => model23).length;\n if (userConfig)\n this.config = mergeDeep(this.config, userConfig);\n if (this.env.initial) {\n if (!await check(this, false))\n log(\"error: backend check failed\");\n await Aie();\n if (this.env.browser) {\n if (this.config.debug)\n log(\"configuration:\", this.config);\n if (this.config.debug)\n log(\"tf flags:\", this.tf.ENV.flags);\n }\n }\n await this.models.load(this);\n if (this.env.initial && this.config.debug)\n log(\"tf engine state:\", this.tf.engine().state.numBytes, \"bytes\", this.tf.engine().state.numTensors, \"tensors\");\n this.env.initial = false;\n const loaded = Object.values(this.models.models).filter((model23) => model23).length;\n if (loaded !== count2) {\n this.models.validate();\n this.emit(\"load\");\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.performance.loadModels || 0))\n this.performance.loadModels = this.env.perfadd ? (this.performance.loadModels || 0) + current : current;\n }\n /** Runs interpolation using last known result and returns smoothened result\n * Interpolation is based on time since last known result so can be called independently\n *\n * @param result - {@link Result} optional use specific result set to run interpolation on\n * @returns result - {@link Result}\n */\n next(result = this.result) {\n return calc2(result, this.config);\n }\n /** Warmup method pre-initializes all configured models for faster inference\n * - can take significant time on startup\n * - only used for `webgl` and `humangl` backends\n * @param userConfig - {@link Config}\n * @returns result - {@link Result}\n */\n async warmup(userConfig) {\n const t0 = now();\n const res = await warmup(this, userConfig);\n const t12 = now();\n this.performance.warmup = Math.trunc(t12 - t0);\n return res;\n }\n /** Run detect with tensorflow profiling\n * - result object will contain total exeuction time information for top-20 kernels\n * - actual detection object can be accessed via `human.result`\n */\n async profile(input, userConfig) {\n const profile = await this.tf.profile(() => this.detect(input, userConfig));\n const kernels = {};\n let total = 0;\n for (const kernel of profile.kernels) {\n const ms2 = Number(kernel.kernelTimeMs) || 0;\n if (kernels[kernel.name])\n kernels[kernel.name] += ms2;\n else\n kernels[kernel.name] = ms2;\n total += ms2;\n }\n const kernelArr = [];\n Object.entries(kernels).forEach((key) => kernelArr.push({ kernel: key[0], time: key[1], perc: 0 }));\n for (const kernel of kernelArr) {\n kernel.perc = Math.round(1e3 * kernel.time / total) / 1e3;\n kernel.time = Math.round(1e3 * kernel.time) / 1e3;\n }\n kernelArr.sort((a, b) => b.time - a.time);\n kernelArr.length = 20;\n return kernelArr;\n }\n /** Main detection method\n * - Analyze configuration: {@link Config}\n * - Pre-process input: {@link Input}\n * - Run inference for all configured models\n * - Process and return result: {@link Result}\n *\n * @param input - {@link Input}\n * @param userConfig - {@link Config}\n * @returns result - {@link Result}\n */\n async detect(input, userConfig) {\n this.state = \"detect\";\n return new Promise(async (resolve) => {\n var _a2, _b2, _c2, _d2, _e, _f2, _g2, _h2, _i2, _j2, _k, _l2, _m2, _n2, _o2, _p2, _q2, _r2, _s2, _t, _u2;\n this.state = \"config\";\n let timeStamp;\n this.config = mergeDeep(this.config, userConfig);\n this.state = \"check\";\n const error = __privateGet(this, _sanity).call(this, input);\n if (error) {\n log(error, input);\n this.emit(\"error\");\n resolve(empty(error));\n }\n const timeStart = now();\n await this.load();\n timeStamp = now();\n this.state = \"image\";\n const img = await process2(input, this.config);\n this.process = img;\n this.performance.inputProcess = this.env.perfadd ? (this.performance.inputProcess || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);\n this.analyze(\"Get Image:\");\n if (!img.tensor) {\n if (this.config.debug)\n log(\"could not convert input to tensor\");\n this.emit(\"error\");\n resolve(empty(\"could not convert input to tensor\"));\n return;\n }\n this.emit(\"image\");\n timeStamp = now();\n this.config.skipAllowed = await skip(this.config, img.tensor);\n this.config.filter.autoBrightness = (this.config.filter.autoBrightness || false) && this.config.skipAllowed;\n if (!this.performance.totalFrames)\n this.performance.totalFrames = 0;\n if (!this.performance.cachedFrames)\n this.performance.cachedFrames = 0;\n this.performance.totalFrames++;\n if (this.config.skipAllowed)\n this.performance.cachedFrames++;\n this.performance.cacheCheck = this.env.perfadd ? (this.performance.cacheCheck || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);\n this.analyze(\"Check Changed:\");\n let faceRes = [];\n let bodyRes = [];\n let handRes = [];\n let objectRes = [];\n this.state = \"detect:face\";\n if (this.config.async) {\n faceRes = this.config.face.enabled ? detectFace(this, img.tensor) : [];\n if (this.performance.face)\n delete this.performance.face;\n } else {\n timeStamp = now();\n faceRes = this.config.face.enabled ? await detectFace(this, img.tensor) : [];\n this.performance.face = this.env.perfadd ? (this.performance.face || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);\n }\n if (this.config.async && (this.config.body.maxDetected === -1 || this.config.hand.maxDetected === -1))\n faceRes = await faceRes;\n this.analyze(\"Start Body:\");\n this.state = \"detect:body\";\n const bodyConfig = this.config.body.maxDetected === -1 ? mergeDeep(this.config, { body: { maxDetected: this.config.face.enabled ? 1 * faceRes.length : 1 } }) : this.config;\n if (this.config.async) {\n if ((_a2 = this.config.body.modelPath) == null ? void 0 : _a2.includes(\"posenet\"))\n bodyRes = this.config.body.enabled ? predict19(img.tensor, bodyConfig) : [];\n else if ((_b2 = this.config.body.modelPath) == null ? void 0 : _b2.includes(\"blazepose\"))\n bodyRes = this.config.body.enabled ? predict(img.tensor, bodyConfig) : [];\n else if ((_c2 = this.config.body.modelPath) == null ? void 0 : _c2.includes(\"efficientpose\"))\n bodyRes = this.config.body.enabled ? predict3(img.tensor, bodyConfig) : [];\n else if ((_d2 = this.config.body.modelPath) == null ? void 0 : _d2.includes(\"movenet\"))\n bodyRes = this.config.body.enabled ? predict17(img.tensor, bodyConfig) : [];\n if (this.performance.body)\n delete this.performance.body;\n } else {\n timeStamp = now();\n if ((_e = this.config.body.modelPath) == null ? void 0 : _e.includes(\"posenet\"))\n bodyRes = this.config.body.enabled ? await predict19(img.tensor, bodyConfig) : [];\n else if ((_f2 = this.config.body.modelPath) == null ? void 0 : _f2.includes(\"blazepose\"))\n bodyRes = this.config.body.enabled ? await predict(img.tensor, bodyConfig) : [];\n else if ((_g2 = this.config.body.modelPath) == null ? void 0 : _g2.includes(\"efficientpose\"))\n bodyRes = this.config.body.enabled ? await predict3(img.tensor, bodyConfig) : [];\n else if ((_h2 = this.config.body.modelPath) == null ? void 0 : _h2.includes(\"movenet\"))\n bodyRes = this.config.body.enabled ? await predict17(img.tensor, bodyConfig) : [];\n this.performance.body = this.env.perfadd ? (this.performance.body || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);\n }\n this.analyze(\"End Body:\");\n this.analyze(\"Start Hand:\");\n this.state = \"detect:hand\";\n const handConfig = this.config.hand.maxDetected === -1 ? mergeDeep(this.config, { hand: { maxDetected: this.config.face.enabled ? 2 * faceRes.length : 1 } }) : this.config;\n if (this.config.async) {\n if ((_j2 = (_i2 = this.config.hand.detector) == null ? void 0 : _i2.modelPath) == null ? void 0 : _j2.includes(\"handdetect\"))\n handRes = this.config.hand.enabled ? predict14(img.tensor, handConfig) : [];\n else if ((_l2 = (_k = this.config.hand.detector) == null ? void 0 : _k.modelPath) == null ? void 0 : _l2.includes(\"handtrack\"))\n handRes = this.config.hand.enabled ? predict15(img.tensor, handConfig) : [];\n if (this.performance.hand)\n delete this.performance.hand;\n } else {\n timeStamp = now();\n if ((_n2 = (_m2 = this.config.hand.detector) == null ? void 0 : _m2.modelPath) == null ? void 0 : _n2.includes(\"handdetect\"))\n handRes = this.config.hand.enabled ? await predict14(img.tensor, handConfig) : [];\n else if ((_p2 = (_o2 = this.config.hand.detector) == null ? void 0 : _o2.modelPath) == null ? void 0 : _p2.includes(\"handtrack\"))\n handRes = this.config.hand.enabled ? await predict15(img.tensor, handConfig) : [];\n this.performance.hand = this.env.perfadd ? (this.performance.hand || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);\n }\n this.analyze(\"End Hand:\");\n this.analyze(\"Start Object:\");\n this.state = \"detect:object\";\n if (this.config.async) {\n if ((_q2 = this.config.object.modelPath) == null ? void 0 : _q2.includes(\"nanodet\"))\n objectRes = this.config.object.enabled ? predict18(img.tensor, this.config) : [];\n else if ((_r2 = this.config.object.modelPath) == null ? void 0 : _r2.includes(\"centernet\"))\n objectRes = this.config.object.enabled ? predict2(img.tensor, this.config) : [];\n if (this.performance.object)\n delete this.performance.object;\n } else {\n timeStamp = now();\n if ((_s2 = this.config.object.modelPath) == null ? void 0 : _s2.includes(\"nanodet\"))\n objectRes = this.config.object.enabled ? await predict18(img.tensor, this.config) : [];\n else if ((_t = this.config.object.modelPath) == null ? void 0 : _t.includes(\"centernet\"))\n objectRes = this.config.object.enabled ? await predict2(img.tensor, this.config) : [];\n this.performance.object = this.env.perfadd ? (this.performance.object || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);\n }\n this.analyze(\"End Object:\");\n this.state = \"detect:await\";\n if (this.config.async)\n [faceRes, bodyRes, handRes, objectRes] = await Promise.all([faceRes, bodyRes, handRes, objectRes]);\n this.state = \"detect:gesture\";\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...face2(faceRes), ...body2(bodyRes), ...hand2(handRes), ...iris2(faceRes)];\n if (!this.config.async)\n this.performance.gesture = this.env.perfadd ? (this.performance.gesture || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);\n else if (this.performance.gesture)\n delete this.performance.gesture;\n }\n this.performance.total = this.env.perfadd ? (this.performance.total || 0) + Math.trunc(now() - timeStart) : Math.trunc(now() - timeStart);\n const shape = ((_u2 = this.process.tensor) == null ? void 0 : _u2.shape) || [0, 0, 0, 0];\n this.result = {\n face: faceRes,\n body: bodyRes,\n hand: handRes,\n gesture: gestureRes,\n object: objectRes,\n performance: this.performance,\n canvas: this.process.canvas,\n timestamp: Date.now(),\n error: null,\n width: shape[2],\n height: shape[1],\n get persons() {\n return join2(faceRes, bodyRes, handRes, gestureRes, shape);\n }\n };\n Ot(img.tensor);\n this.emit(\"detect\");\n this.state = \"idle\";\n resolve(this.result);\n });\n }\n /** Helper function\n * @param ms - sleep time in miliseconds\n */\n async sleep(ms2) {\n return new Promise((resolve) => {\n setTimeout(resolve, ms2);\n });\n }\n /** Continously detect video frames\n * @param element - HTMLVideoElement input\n * @param run - boolean run continously or stop if already running, default true\n * @param delay - number delay detection between frames for number of miliseconds, default 0\n */\n async video(element, run = true, delay = 0) {\n if (run) {\n if (!__privateGet(this, _loops)[element.id]) {\n if (this.config.debug)\n log(\"video start\", element.id);\n __privateGet(this, _loops)[element.id] = true;\n }\n if (!element.paused && __privateGet(this, _loops)[element.id] && element.readyState >= 2)\n await this.detect(element);\n if (delay > 0)\n await this.sleep(delay);\n if (__privateGet(this, _loops)[element.id])\n requestAnimationFrame(() => this.video(element, run, delay));\n } else {\n if (this.config.debug)\n log(\"video stop\", element.id);\n __privateGet(this, _loops)[element.id] = false;\n }\n }\n};\n_numTensors = new WeakMap();\n_analyzeMemoryLeaks = new WeakMap();\n_checkSanity = new WeakMap();\n_sanity = new WeakMap();\n_loops = new WeakMap();\nexport {\n Env,\n Human,\n Human as default,\n config as defaults,\n draw_exports as draw,\n empty,\n env,\n match_exports as match,\n models_exports2 as models\n};\n//# sourceMappingURL=human.esm.js.map\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaceDetector.vue?vue&type=style&index=0&id=7dd534b2&prod&lang=scss&\"","'use strict';\n\nvar getVoice = function filterVoice(q){\n q = q || \"Veena\"; // Indian Voice ;)\n return (window.speechSynthesis.getVoices()\n .filter(function(v) {\n return v.name.toUpperCase() === q.toUpperCase() || \n v.lang.toUpperCase() === q.toUpperCase()\n })\n )[0];\n}\n\nvar talk = function (msg, voiceType){\n var person = new SpeechSynthesisUtterance(msg);\n person.voice = getVoice(voiceType);\n window.speechSynthesis.speak(person);\n}\n\n\ntalk.names = window.speechSynthesis.getVoices()\n .map(function(s) {\n return s.name;\n });\n\ntalk.langs = window.speechSynthesis.getVoices()\n .map(function(s) {\n return s.lang;\n }).reduce(function(prev, cur) {\n return (prev.indexOf(cur) < 0) ? prev.concat([cur]) : prev;\n }, []);\n\nmodule.exports = talk;"],"sourceRoot":""}